C ++-如何在与main()相同的文件中向前声明一个类-获取变量使用未定义的类错误

时间:2019-02-14 18:42:41

标签: c++ class

我知道使用函数原型,并且给人一种印象,当main()和一个类在同一文件中时,前向类声明可以达到类似的目的。例如,我希望它会编译:

// main.cpp

#include <iostream>

// class prototypes
class MyClass;

int main(void)
{
  MyClass myClass;

  // do stuff with myClass here

  return(0);
}

class MyClass
{
public:
  int someInt;
  double someDouble;

  // more stuff here . . .

};

但是在MyClass myClass;行,我得到了错误'myClass' uses undefined class 'MyClass'。我在做什么错了?

P.S。我知道我可以将main()剪切/粘贴到它使用的所有类的下面,这样可以修复错误,但是我更愿意将main()保留为第一个函数或类。

P.P.S。我知道,在任何规模较大的生产程序中,main().h内容和.cpp内容都位于3个单独的文件中。在这种情况下,我试图编写一个小的示例或测试程序,其中main和一个类位于同一文件中。

-编辑--------------

要总结接受的答案和其他评论,总而言之,在C ++中,没有办法实现我想要的。唯一的选择是1)将使用过的类放在main()之前,或2)将main().h内容和.cpp内容放在一个单独的文件中,就像一个大文件一样程序。

这很不幸。其他所有现代语言都支持这一点。我希望在下一个C ++修订版中添加它。

1 个答案:

答案 0 :(得分:0)

转发声明只能通过指针或引用使用。
调用构造函数并不属于此类。


  

我知道我可以将main()剪切/粘贴到它使用的所有类的下面,这样可以修复错误,但是我宁愿将main()保留为第一个函数或类。

这就是为什么通常使用头文件,而不是将所有声明和定义放在main.cpp文件中的原因。

  

我知道在任何规模的生产程序中,main(),.h内容和.cpp内容都将位于3个单独的文件中。在这种情况下,我试图编写一个小的示例或测试程序,其中main和一个类位于同一文件中。

尽管如此,您仍然应该坚持这一惯用语,否则其他所有内容最终都将变得一团糟。