Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 静态类中的静态main?_C++ - Fatal编程技术网

C++ 静态类中的静态main?

C++ 静态类中的静态main?,c++,C++,我想弄明白为什么这不起作用。我想在Java中这样做,main是类中的静态函数,但这会产生未解决的外部符号错误: static class MainClass { public: static int _tmain(int argc, char* argv[]) { return 0; } }; 为什么这样不行 谢谢,因为二进制文件中的_tmain与其中的类名MainClass发生了冲突,因此多个类中可能有一个函数_tmain,而不会发生冲突。

我想弄明白为什么这不起作用。我想在Java中这样做,main是类中的静态函数,但这会产生未解决的外部符号错误:

 static class MainClass
{
     public:
    static int _tmain(int argc, char* argv[])
    {
        return 0;
    }
};
为什么这样不行

谢谢

,因为二进制文件中的_tmain与其中的类名MainClass发生了冲突,因此多个类中可能有一个函数_tmain,而不会发生冲突。它的名称与::\u tmain将使用的名称不同

我记得,在MSVC的早期版本中,它接受了以下内容,但没有出现链接器错误,这是由于在我的代码库中进行了一次宏扩展而导致的意外结果

namespace bar {
  int main() { }
}

它显然对名称main进行了特殊处理,没有将其损坏,也没有将其损坏为与::main相同的名称。但这样的事情并不符合标准。与类的情况一样,这样的函数与主函数完全无关。

C++不是这样工作的。 您需要main作为一个函数:

int main(int argc,char* argv[])
{
    //STUFF
}

它不是真正的C++,而是标准的链接程序,它正在寻找一个带有C风格链接的特定名称的导出。特定的导出根据编译器和可执行文件类型而有所不同,但每种类型的格式都是特定的。例如,Windows GUI exe的入口点不同于控制台,并且特定于ASCII或UNICODE。但是链接器总是在寻找具有特定链接名称的函数,这就是静态成员无法工作的原因。

\u tmain是从CRT调用的。你需要在链接器中设置一个入口点,指向另一个函数,调用主干::代替.tMeor。

,因为在C++中,你不能在一个类内放置一个入口点。可能会有帮助。

您始终需要将main定义为全局函数。这是程序总是在C++中启动的地方。如果您真的想:

class MainClass
{
     public:
    static int _tmain(int argc, char* argv[])
    {
        return 0;
    }
};

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

为什么不起作用?因为它不是C++。
struct MainClass {
  static int main(int argc, char** argv) {
    return 0;
  }
};

int main(int argc, char** argv) {
  return MainClass::main(argc, argv);
}

你想通过把一个类放在一个类里面来实现什么?C++不是java…为什么人们必须像X语言那样编程?如果在罗马,…尝试在Windowsg++上使用code:Blocks编译代码,我会得到错误:只能为对象和函数指定存储类。只是加上这个供别人参考。在C++中,静态类是正确的,但是它应该读取静态类optoname…{…} name;他后来忘记了名字。静态属性属于声明器,而不是类。