static class EntranceClass {
public:
static void RegisterSomething()
{
}
static int main()
{
RegisterSomething();
return 0;
}
} // <-expected unqualified-id at end
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:输入main.cpp结束时预期的nonqualified-id问题
有什么解决方案吗?
Ara*_*raK 23
main只是main简单!功能:
class EntranceClass
{
...
}; //<-- note the semicolon
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
错误是指static在类定义之前使用关键字 - 编译器在此之后需要一个变量名(因为在C++中没有这样的东西static class).
如果你想static int EntranceMain::main(void)用作程序的入口点,那么一种方法就是告诉你的链接器,即给它一个完整的装饰名称.这在很大程度上取决于您使用的编译器和链接器,因此您需要参考其文档.但使用它可能意味着您需要包含启动代码(例如CRT初始化).
但请注意,这不符合标准.
根据标准,你不是在写一个真正的main功能.
第3.6.1节,第3段:"功能main.不得在程序中被使用(3.2)连接(3.5)的main.是实现定义声明的程序main是inline或static.是形成不良的名称main是没有另外保留.[ 示例: 可以调用成员函数,类和枚举main,其他名称空间中的实体也可以调用.]"
这意味着,通过声明成员函数main,您只是声明一个成员函数.它没有特别的意义,并不意味着课堂上的任何东西都可以独立调用.如果您替换snicklefrazz该函数名称和所有引用,该程序将完全相同.
在风格上,snicklefrazz会更好,因为它不会导致标准main功能的任何可能的结论.
第3.6.1节第1段:"程序应包含一个名为的全局函数main,它是程序的指定开始.它是实现定义的,是否需要在独立环境中的程序来定义main函数."
这意味着,除非您正在编写标准称为独立环境(通常用于编写嵌入式系统)的内容,否则您需要定义一个main全局函数,这就是程序启动的地方.
在Java中,类可以有一个main方法,该方法是在调用类时程序开始的位置.在C++中并非如此,并且无法直接实现此目的.
(并且,正如其他人所提到的,a class不可能static,并且类定义以分号结尾.)