我遇到了以下问题,有没有人有个好主意?
class Vector_2d;
namespace Utils {
class Align_vector : public Vector_2d {
protected:
bool check_range(int x, int y);
public:
enum alignment {left, right, up, down};
Align_vector(Alignment alignment);
void set_alignment(Alignment alignment);
Alignment get_alignment();
};
}
错误是:
错误:无效使用不完整类型'class Vector_2d'
但是怎么会有错误?
答案 0 :(得分:4)
class Vector_2d;
这只是通过该名称退出来声明一个类
要继承它,需要提供完整的类定义。
class Vector_2d {
// Your code goes here
};
class Align_vector : public Vector_2d {
// Other stuff
};
如果这些类有单独的头文件,请确保在定义继承的类之前包含它。
#include <vector_2d.h>
namespace Utils {
class Align_vector : public Vector_2d {
// Other stuff
};
}
简单地说,当类B
从类A
继承时,类B
的对象将具有A
子对象作为其布局的一部分。登记/>
因此,如果您没有B
的完整定义,则无法定义A
的布局,这取决于A
。