2011-04-17 60 views
7

我环顾四周寻找解决方案,发现了很多关于循环引用和名称空间问题的解决方案(既不适用于我的情况) ,但没有像我遇到的问题。C++:”错误:在继承模板类之前'{'token''期待的类名称

我有一个模板类中定义和数学/ matrix.h实现:

template<class T> 
class Matrix 
{ 
public: 
    // constructors, destructors and what not... 
}; 

我还有另外一个模板类定义和数学实行/ vector.h

#include <maths/matrix.h> 

template<class T> 
class Vector : public Matrix 
{ 
public: 
    // constructors, destructors and what not... 
}; 

我得到这个错误“预期class_ name在vector.h中的{'token'之前,这实际上是在扰乱我。这与matrix.h和vector.h不在一个数学子文件夹中有什么关系,因为我可以在应用程序的其他部分使用matrix.h而没有任何问题。我认为这与Matrix是一个模板化类有关,因为当我将Vector作为非模板化类的子类(例如SomeClass.h)时,所有编译都可以。

非常感谢任何人,可以帮助:)

回答

11

您需要从具体的类,即继承Matrix<T>,不仅Matrix

template<class T> 
class Vector : public Matrix<T> 
{ 
    … 
}; 
+0

OMG我是这样的小菜!谢谢你的工作:) – 2011-04-17 14:12:49

5

你错过了两件事情。

template<typename T> 
class Vector : public Matrix <T> //<----- first : provide the type argument 
{ 

}; //<-------- second : semi-colon (same from Matrix class also) 
+0

非常感谢它的工作:) – 2011-04-17 14:13:12