我遇到以下问题,有人有好主意吗?
\n\nclass 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\n\n错误:无效使用不完整类型 \xe2\x80\x98class Vector_2d\xe2\x80\x99
\n
但怎么会出现错误呢?
\nclass 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
则无法定义 的布局,这取决于。A
A