我第一次使用模板类,并试图找出编译器在使用inheritence时似乎不喜欢的原因。
以下是代码:
template <typename T>
struct xPoint2
{
T x;
T y;
xPoint2() { x = 0; y = 0; };
};
template <typename T>
struct xVector2 : xPoint2<T>
{
xVector2() { x = 0; y = 0; };
};
编译器输出:
vector2.hh: In constructor ‘xVector2<T>::xVector2()’:
vector2.hh:11: error: ‘x’ was not declared in this scope
vector2.hh:11: error: ‘y’ was not declared in this scope
是否无法以这种方式使用模板?
由于
答案 0 :(得分:8)
您需要使用this->x
和this->y
来帮助编译器。
答案 1 :(得分:4)
您必须明确引用父母:
template <typename T>
struct xVector2 : xPoint2<T>
{
typedef xPoint2<T> B;
xVector2() { B::x = 0; B::y = 0; };
};