Консультация № 96788
31.07.2007, 00:25
0.00 руб.
0 5 5
Скажите, можно ли сделать ф-ю main членом-функцией какого-либо класса ? Если да,то привмдите пример.

Обсуждение

Неизвестный
31.07.2007, 01:04
общий
это ответ
Здравствуйте, Денскевич Р!
Нельзя, потому что функция main вызывается снаружи (функцией mainCRTStartup или WinMainCRTStartup), и вызывается она как функция глобальная.
А для того, чтобы вызвать любую функцию класса, нужно как минимум его имя. Естессно, снаружи оно не известно.
Возможно, так можно устроить, используя хитрые заморочки с дефайнами, тайпдефами, подменой адреса.... но честных, документированных путей нет, насколько я знаю
Неизвестный
31.07.2007, 03:19
общий
это ответ
Здравствуйте, Денскевич Р!
Конкретно саму глобальную функцию main конечно нельзя. По стандарту ее вызов проводится именно как глобальный. Но сделать у какого-либо класса функцию main вам никто не мешает. Например как в приложении

Приложение:
class A {public: int main(int argc, char* argv[]);};int A::main(int argc, char* argv[]) { return 0;}int main(int argc, char* argv[]) { A a; a.main(argc, argv); return 0;}
Неизвестный
31.07.2007, 06:12
общий
это ответ
Здравствуйте, Денскевич Р!
Категорически нет.
Неизвестный
31.07.2007, 08:11
общий
это ответ
Здравствуйте, Денскевич Р!
В С/С++ - нельзя, в отличие от C#, где это - необходимое условие.
Неизвестный
31.07.2007, 19:49
общий
это ответ
Здравствуйте, Денскевич Р!
Так, например,

#include <windows.h>
class A{
int main(){
return -1;
}
};

int main(){
return -1;
}
Удачи!
Форма ответа