1
我有这样的例子代码: 的#include不能得到例如用typedef编译模板类
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'得到的错误信息,那么你发布的代码至少可以说是很奇怪的。第一行错误似乎指向代码中不存在的继承关系。 – 2010-08-13 11:27:51
我同意这很奇怪,但我显示了整个代码和一个typename使消息消失。 – Nathan 2010-08-13 11:40:58