C ++继承的模板类无权访问基类

时间:2011-01-26 21:32:05

标签: c++ templates inheritance

我第一次使用模板类,并试图找出编译器在使用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

是否无法以这种方式使用模板?

由于

2 个答案:

答案 0 :(得分:8)

您需要使用this->xthis->y来帮助编译器。

http://www.parashift.com/c++-faq/templates.html#faq-35.19

答案 1 :(得分:4)

您必须明确引用父母:

template <typename T>
struct xVector2 : xPoint2<T>
{
    typedef xPoint2<T> B;
    xVector2() { B::x = 0; B::y = 0; };
};