错误:不完整类型的无效使用

kel*_*ger 2 c++ inheritance

我遇到以下问题,有人有好主意吗?

\n\n
class Vector_2d;\n\nnamespace Utils {\n\nclass Align_vector : public Vector_2d {\nprotected:\n    bool check_range(int x, int y);\n\npublic:\n    enum alignment {left, right, up, down};\n\n    Align_vector(Alignment alignment);\n    void set_alignment(Alignment alignment);\n    Alignment get_alignment();\n\n};\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

错误是:

\n\n
\n

错误:无效使用不完整类型 \xe2\x80\x98class Vector_2d\xe2\x80\x99

\n
\n\n

但怎么会出现错误呢?

\n

Sto*_*ica 7

class Vector_2d;这仅声明一个具有该名称的类存在。
要继承它,需要提供完整的类定义。

class Vector_2d {
  // Your code goes here
};

class Align_vector : public Vector_2d {
  // Other stuff
};
Run Code Online (Sandbox Code Playgroud)

如果这些类有单独的头文件,请确保在定义继承的类之前包含它。

#include <vector_2d.h>

namespace Utils {
    class Align_vector : public Vector_2d {
      // Other stuff
    };
}
Run Code Online (Sandbox Code Playgroud)

简而言之,当类B继承自类时A,类的对象B将有一个A子对象作为其布局的一部分。因此,如果
您没有 的完整定义,B则无法定义 的布局,这取决于。AA