Эксперты...почему так происходит: в классе присуцтвуют перегруженные операторы ввода/вывода (>> <<). Все рабо- тает нормально, но как только я запихиваю этот класс в файл с расширением *.h и пытаюсь его включить в ли- стинг с помошью дерективы #include программа зверски ругается и указывает на кучу ошибак (которых небыло) связанную с перегруженными операторами ввода/вывод. Из-за чего это и как с этим бороться? ------------------------------- В поле преложение именно та часть класса которая тупит.
Здравствуйте, kuper! Вы хотя бы написали, какой компилятор, каких именно ошибок. Лично у меня компилятор (VC++ 6.0) выдает только два предупреждения С4715 (not all control paths return a value) в matrix::in и matrix::out. Правда я вставил перед классом using namespace std; (либо можно перед istream, ostream расставить std::). Еще возможно Вы пишете тела операторов в заголовочном файле, тогда необходимо ставить перед ними inline. С уважением, Avl2k. Ответ отправлен: 29.11.2002, 10:21 Отправитель: Avl2k
Вопрос № 402
Доброе время суток , эксперты ! ******************************* 1.Как при запуске программы определить, есть ли уже ее экземпляр в памяти ? 2.Как в MFC самому задать классу диалогового окна имя ?
Добрый день, IceWINteR! 1. Обычно используют следующие варианты: - глобально рассылают уникальное сообщение (BroadcastSystemMessage/BroadcastSystemMessageEx); - ищут окно при помощи FindWindow; - создают уникальный именованный pipe (CreateNamedPipe); - создают именованный semaphore(CreateSemaphore/OpenSemaphore); 2. Не совсем понял вопрос, если имелось ввиду имя C++ класса, создаваемого ClassWizard, то встаем на ресурс диалога, говорим Ctrl-W, создать новый класс, задаем имя. С уважением, Avl2k. Ответ отправлен: 29.11.2002, 17:41 Отправитель: Avl2k Отвечает Gibbel
Доброе время суток, IceWINteR! Вот статейка, правда, примеры на Delphi, но все работает и на других языках... Ответ отправлен: 29.11.2002, 17:28 Отправитель: Gibbel Отвечает vitya
Приветствую Вас, IceWINteR! Отвечу на первый вопрос. Я делаю это так: пробую создать именной мьютекс - CreateMutex. Теперь, если мьютекс с таким именем уже создан, то функция воазвращает определенный результат (подробности в MSDN), после чего просто вызываешь ::PostQuitMessage(0); и программа красиво завершается. Второй же вопрос. Если диалог создается Визардом, то в самом конце ты можешь написать имена классов. Если же ты делаешь добваления диалогого ресурса в уже созданный проект, то там так же ты пишешься имя своего диалога. Если же ты уже создал диалог и теперь хочешь изменить его имя, то просто во всех файлах замени COldNameDlg на CNewNameDlg и все будет работать. Удачи. Ответ отправлен: 29.11.2002, 17:19 Отправитель: vitya Отвечает Jadd
Приветствую Вас, IceWINteR! 1)Легко. В функции WinMain есть параметр такой hPrevInstance. Можно его проверять. Можно использовать именованные объекты ядра, типа именованных мьютексов. В этом случае, есть возможность на уровне ядра проверять существование объекта с таким именем. Но с мьютексами надо осторожнее работать, т.к. они заставляют переключаться винду из пользовательского режима в привелегированый режим и обратно, что занимает 1000 циклов проца. Если тебя это не пугает, то - вперед. 2)Не понял вопроса? При создании диалога в ресурсах и потом при переходе в ClassWizard он сам предложит тебе назвать свой класс. Может я че не понял? Ответ отправлен: 30.11.2002, 01:55 Отправитель: Jadd Отвечает Switcher
Добрый день, IceWINteR! Попробуй так: hWnd=FindWindow("имя проги",NULL); if (hWnd) "Приложение уже запущено!"; Под MFC: CWnd::FindWindow(_T("имя проги"),NULL))
Ответ отправлен: 02.12.2002, 22:25 Отправитель: Switcher
Вопрос № 403
Дарова! ВОт есть Visual C++ Buldier C++ , но это же среды разработки? А С++ получается идёт как отдельный язык и на него вроде какой то стандарт есть да?
Добрый день, Пупс! Да, именно так. Среды разработки Visual C++ и т.п. - это все-лишь "notepad.exe" с расширенными возможностями. Их можно использовать и для "программирования", например на ассемблере :-). Главное правильно настроить. Что касается стандарта, то это 700 станичная книга, и по-хорошему продается комитетом ANSI за неплохие деньги. Но есть и в электронном виде ;-).
Ответ отправлен: 29.11.2002, 19:00 Отправитель: wiggler Отвечает vitya
Доброе время суток, Пупс! Именно так оно и есть: Стандарт:ISO/IEC 14882 Ответ отправлен: 01.12.2002, 10:38 Отправитель: vitya Отвечает Gibbel
Добрый день, Пупс! Стандарт то есть... Но на него все "кладут"...;-) Ответ отправлен: 29.11.2002, 18:53 Отправитель: Gibbel Отвечает Jadd
Добрый день, Пупс! Гы. Да. Но все эти среды разработки облегчают тебе задачу создания твоих супер-пупер-мега-кул программ, иначе нам пришлось бы все делать как-то через задницу. Например, пришлось бы набирать все в текстовом редакторе и компилить из-под коммандной строки используя дикое колличество диких ключей-параметров (например, как в Unix или различных sdk) и тп, или, что еще круче, писать в машинных кодах. :) Стандарт один - ANSII. Есть разные либы к С++, но стандарт изначально один. Ответ отправлен: 30.11.2002, 01:50 Отправитель: Jadd
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.