【发布时间】:2014-02-06 01:22:48
【问题描述】:
考虑以下代码:
template<typename T>
struct MyTempl
{
virtual void doStuff(const T &value) = 0;
};
struct MyImpl : MyTempl<int>
{
void doStuff(const int &value) {}
};
struct MyPtrImpl : MyTempl<int*>
{
void doStuff(const int* &value) {}
};
MyImpl imp1;
MyPtrImpl imp2;
这将无法正确编译:编译器告诉我MyPtrImpl 中的doStuff() 是纯虚拟的,即。我未能正确覆盖它。但是,如果我将int* 键入int_ptr 之类的东西,并将其用作MyPtrImpl 的模板参数,那么一切正常。
为什么没有typedef编译器无法推断出我的意图?
【问题讨论】:
标签: c++ templates pointers reference virtual