【发布时间】:2010-08-13 11:18:04
【问题描述】:
我有这个示例代码: #包括
template<class T>
class Class
{
public:
typedef boost::shared_ptr<Class<T> > Ref;
};
template<class T>
class Class2
{
public:
Class<T>::Ref getAReference() {return Class<T>::Ref(new Class<T>);};
};
int main(){}
当我尝试编译它时,我得到:
test.cpp:14: error: type ‘Class<T>’ is not derived from type ‘Class2<T>’
test.cpp:14: error: expected ‘;’ before ‘getAReference’
我不明白,为什么它不起作用?如何让它发挥作用?
【问题讨论】:
-
你展示的是整个代码吗?您显然缺少
typename,但如果这是您从缺少的typename中得到的错误消息,并且与您发布的代码完全相同,那么至少可以说编译器诊断很奇怪。第一行错误似乎指向代码中不存在的继承关系。 -
我同意这很奇怪,但我展示了整个代码,并且类型名使消息消失了。