C++ 类内的Int main
一个简单的问题,如何在类中运行一个有main的程序? 我有一个密码: MojSwiat2.cpp: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
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();
}