1 c++ inheritance gcc templates
关于模板实例化和继承,我一直面临着一个巨大的挑战(至少对我而言).我们来看看这段代码:
class Convertible
{
public:
template<class T>
T* AsPtrTo()
{
return reinterpret_cast<T*>(this);
}
};
template<class T>
class TemplateBase : public Convertible
{
};
template<class T>
class TemplateDerived : public TemplateBase<T>
{
public:
void Method1(TemplateBase<T> t)
{
t.AsPtrTo<int>(); // <<<<<< ERROR
}
};
int main()
{
TemplateDerived<int> d;
TemplateBase<int> b;
d.Method1(b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,有一个名为Convertible的类,只有一个执行类型转换的模板方法.还有一个继承自Convertible的模板类,然后是继承自前一个的模板类.最后一个模板类实现了一个使用模板方法AsPtrTo的方法,该方法应该从Convertible继承,并在编译期间为main函数中使用的类型T实例化.
由于某些原因我无法理解,这失败了.GCC 4.4.1给了我这样的信息:
错误:'int'之前的预期primary-expression
我已经标出了错误的一行.
我想也许这里的C++专家可以帮我一把.
提前谢谢大家!
您需要使用关键字template:
t.template AsPtrTo<int>();
Run Code Online (Sandbox Code Playgroud)
这已经讨论了很多次,你会在SO上找到无数的帖子.
但在这里你会发现一个最好的解释:
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |