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

时间:2016-07-04 08:20:54

标签: c++ inheritance

我遇到了以下问题,有没有人有个好主意?

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'

但是怎么会有错误?

1 个答案:

答案 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