【发布时间】:2012-10-09 06:17:26
【问题描述】:
template<typename T1, typename T2, typename T3>
class A: public A<T1, T2, void> {
public:
T1 a;
T2 b;
T3 c;
void set() { a = aa; } // Cannot find variable `aa' here!
};
template<typename T1, typename T2>
class A<T1, T2, void> {
public:
T1 aa;
T2 bb;
};
如上所述,我有一个模板类A,它的部分特殊形式A'。那么A有可能继承A'吗?根据g ++,它似乎还可以。但是,当我尝试访问 A' 中的成员时,g++ 开始抱怨:找不到该符号。有人知道为什么吗?
【问题讨论】:
-
As above, I have a template class A, and its partial specialized form A'. So is it possible for A to inherit from A'?这听起来不像从自身继承一个类吗? -
试试说
this->aa而不是aa吧? -
@SingerOfTheFall - 不,它没有。它只是从更具体的形式派生出更通用的形式。前段时间与容器一起使用的技巧是在 void/void* 上派生形式/包含容器特化,它实现了所有机制并且仅以通用形式适当地转换。
标签: c++ templates inheritance template-specialization