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