Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Как из глобальной функции |
Автор: Edik 2.11.2007, 12:05 | ||||||
Предположим у меня есть глобальная функция void MyFunc(void); и есть функция класса void CMyClass::OnError(); так вот как мне из этой MyFunc(); вызвать CMyClass::Error(). Пробывал так:
Ничего не выходит. Пробывал и так:
Тоже ничего не выходит. Пробывал и так:
Подскажите выход. |
Автор: Andrey44 2.11.2007, 12:44 |
В функцию передавай this параметром например MyFunck(void *param) А в функции делай СMyClass *myclass = (СMyClass*) param; |
Автор: Fazil6 2.11.2007, 13:35 |
что значит не выходит ? |
Автор: archimed7592 2.11.2007, 13:52 |
Либо такой ф-ции в CMyClass не существует(м.б. OnError, а не Error?), либо она private/protected. |
Автор: Edik 2.11.2007, 15:04 |
не, функция есть- но не вызываеться. а через this не получиться, так как это не функция вызываеться из диалога, что бы this класса диалога передать в функцию и через этот this запустить диалог. она у меня вобще то в dll размещеная эта фунция. к тому не просто в мфс приложениях у меня это тоже не получилось. мне это чисто интересно как сделать. такое у меня часто в программах встречаеться. что бы из глобальной функции моей MyFunc() вызвать CMyClass::OnError(). Да функция есть, но ... не вызываеться. Ошибка исполнения на методе Dlg.DoModal(). как же в нее передаш указатель this класса диалога? |
Автор: Andrey44 2.11.2007, 15:45 |
Подожди, а как ты из Dlg.DoModal() вызываешь функции класса? |
Автор: zkv 2.11.2007, 15:46 | ||
пример:
|
Автор: Edik 2.11.2007, 16:25 | ||
Так вот, продолжим. Мой код.
Короче мне вот так вот типа надо такого плана доступ получить к m_edit, ну и естественно через класс GlobalFuncDlg. Дальше так же можна и доступ к функциям класса получить, если пример получиться. Так вот- ошибка: Linking... GlobalFuncDlg.obj : error LNK2005: "class CGlobalFuncDlg MyClass" (?MyClass@@3VCGlobalFuncDlg@@A) already defined in GlobalFunc.obj |
Автор: Fazil6 2.11.2007, 20:46 |
Уважаемый, читайте, что вам линкер пишет. Такие, как Вы выразились "Объявление класса" нельзя в хедерах делать ибо будете иметь то, что имеете |
Автор: Edik 4.11.2007, 01:18 | ||||
После моих недолгих проб и ошибок, я в конце концов нашел решение моей проблемы. Реально, рабочий код.
А вот zkv даже подсказал более утонченное, но не столь для меня актульное решение:
|
Автор: zkv 4.11.2007, 06:49 |
Удалил оффтоп/эмоции. Тема закрыта. |