C++ 奇怪的原型错误:Cpp';标题和标题

C++ 奇怪的原型错误:Cpp';标题和标题,c++,class,object,prototype,declaration,C++,Class,Object,Prototype,Declaration,这是我收到的以下错误 错误:转发“A类”声明| 我正在尝试原型化这些类,并使它们在全球范围内可用。 我认为最好通过图片来解释这一点,因此: Oops还忘了提到FileA.cpp还包括External.h 如果没有完整的类定义,就无法实例化对象(使用new) 将定义移动到External.h或使用工厂方法返回有效指针。使用类a时,需要该类的完整定义。否则编译器将如何知道它有哪些方法和变量?这包括对象实例的构造,即使只是在创建指针时也是如此。main试图在对类一无所知的情况下构造一个类,而只知道它存

这是我收到的以下错误

错误:转发“A类”声明|

我正在尝试原型化这些类,并使它们在全球范围内可用。 我认为最好通过图片来解释这一点,因此:

Oops还忘了提到FileA.cpp还包括External.h


如果没有完整的类定义,就无法实例化对象(使用
new


将定义移动到
External.h
或使用工厂方法返回有效指针。

使用类
a
时,需要该类的完整定义。否则编译器将如何知道它有哪些方法和变量?这包括对象实例的构造,即使只是在创建指针时也是如此。

main试图在对类一无所知的情况下构造一个类,而只知道它存在。您需要Main.cpp可用的定义,而不是隐藏在另一个cpp文件中。

类的前向声明足以声明指向该类的指针或引用,但仅此而已。如果要使用类函数(包括构造函数),则需要在使用时提供完整的定义。

对于实例化对象(自动或使用<代码>新建),需要具有可见类型的完整定义。
class A
主体应该对Main.cpp可见

仅向前声明的不完整类型的使用有限。它可以用作:

  • 指针
  • 参考文献
  • 模板参数
  • e、 g

    A类;
    X类{
    A*p;
    A&r;
    std::向量v;
    };
    
    请不要发布代码的图片。谁用非单空格字体编码!?
    class A;
    class X {
      A* p;
      A& r;
      std::vector<A> v;
    };