C++ 类内的Int main

C++ 类内的Int main,c++,class,main,C++,Class,Main,一个简单的问题,如何在类中运行一个有main的程序? 我有一个密码: MojSwiat2.cpp: int Main::main() { // code return 0; } 和MojSwiat2.h: class Main { public: int main(); }; Main run; int Main::main() { // with this I have error: function int Main::main(void) already has

一个简单的问题,如何在类中运行一个有main的程序? 我有一个密码:

MojSwiat2.cpp:

int Main::main() {
    // code 
    return 0;
}
和MojSwiat2.h:

class Main {
public:
    int main();
};
Main run;
int Main::main() { // with this I have error: function int Main::main(void) already has a body
    run.main();
} // and without I got unresolved external symbol _main referenced in function __tmainCRTStartup

我需要这样做的原因:

通过定义一个普通的
main
,它只包含对其他函数的调用。像这样:

int main(int, char**) {
    return Main().main();
}

您仍然需要定义
main

class my_app {
   int main(int argc, char* argv[])
   {
      // ...
   }
}

my_app app;

int main(int argc, char *argv[])
{
   return app.main(argc, argv);
}
或者如果Main::Main声明为静态

int main(int argc, char* argv[])
{
    return Main::main();
}

(可选)编译器可能允许您设置入口点,但这是不可移植和非标准的。工作非常完美!你能解释一下(int,char**)是做什么的以及为什么需要它吗?这是用于控制台的吗?我是说,从终端运行?它们是没有名字的参数。这告诉编译器将有两个类型为
int
char**
的参数,但您永远不会使用它们。您可能更习惯于
intmain(intargc,char*argv[])
,这完全相同,只是编译器可能会发出警告,因为
argc
argv
都没有被使用过。感谢您的简要解释:)
intmain(){/*…*/}
也是
main
的有效且可移植的定义;不需要定义匿名参数。@KeithThompson事实上,我之所以选择这个版本,是因为我通常都会使用这些参数;)
int main(int argc, char* argv[])
{
    return Main::main();
}