Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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++ 错误:X没有命名类型_C++ - Fatal编程技术网

C++ 错误:X没有命名类型

C++ 错误:X没有命名类型,c++,C++,此代码有什么问题: class C { public: int h(); }; C he; //Fine he.h(); //Error: 'he' does not name a type int main() { C me; //Fine me.h(); //Fine } 使用MinGW 4.6.2 注意:我只是编译,不是链接。在函数外部,只能放置声明/定义。执行类似于he.h()的操作,该代码需要在函

此代码有什么问题:

class C {
  public:
  int h();
};

C he;          //Fine
he.h();        //Error: 'he' does not name a type

int main() {
  C me;           //Fine
  me.h();         //Fine
}
使用MinGW 4.6.2


注意:我只是编译,不是链接。

在函数外部,只能放置声明/定义。执行类似于
he.h()的操作,该代码需要在函数中运行。

在最高层,每个C++翻译单元必须由声明< /P>组成。

translation-unit: 
  declaration-seq[opt]

declaration-seq:
  declaration
  declaration-seq declaration
Bur
he.h()不是一个声明。因此出现了错误

可以引入一个伪变量将其转换为声明

int dummy = he.h();

代码将被编译。但是原始版本是非法的。

如果可以在其外部调用函数,为什么会存在
main
?编译时出现的错误是编译错误(也称为:错误,因为您的代码不遵循语言规定的规则)。您在运行时得到的是运行时异常(也称:您的代码遵循语言规则,但在执行时可能会出错)。我想知道为什么我可以执行“int I”,但不能对类执行相同的操作。我刚刚意识到我可以声明一个类,而不是执行它的函数。@ PuBB:在C++中,你可以调用函数“<代码>主< /代码>”。函数调用可以从全局对象的构造函数、初始值设定项表达式等发出。这里面有很多危险的陷阱,但可能性是存在的。