2

我想知道我编码的方式是否正确。我可以创建一个从模板类继承的模板 claas 吗?如果可以,以下代码是否正确:

template<typename Type>
class A{
    public:
        A(){};
        method_A(){//do whatever}
    protected:
        int a;
}

第二类是:

template<typename Type>
class B:public<Type> A {
    public:
        B(){};
        method_B(){this->a=0; this->method_A();}
    protected:
        int b;
}

我的最后一堂课是:

class C:public<double> B{
    public:
        C(){};
        method_C(){ b = 0; method_B();}
    protected:
        int c;
}

为什么this->B 类是强制性的,而 C 类不是强制性的?通常,我是否应该始终添加this->属于同一类的引用参数或方法?

4

1 回答 1

3

这在 C++03 和 C++11 标准的第 14.6.2p3 节中有具体说明:

在类模板或类模板成员的定义中,如果类模板的基类依赖于模板参数,则在类模板的定义点处的非限定名称查找期间不会检查基类范围或成员或在类模板或成员的实例化期间。

于 2013-07-21T14:08:51.907 回答