C ++:“错误:继承模板类时,'{'token'之前的预期类名

时间:2011-04-17 14:03:03

标签: c++ class templates inheritance

我已经四处寻找解决我的问题的方法,发现很多关于循环引用和名称空间问题(在我的情况下都不适用),但没有像我遇到的那样。

我在maths / matrix.h中定义并实现了一个模板类:

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

我在maths / vector.h中定义并实现了另一个模板类

#include <maths/matrix.h>

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

我得到了这个错误“在vector.h中'{'token'之前的期望的class-name,这真的让我烦恼。这与matrix.h和vector.h在maths子文件夹中没有任何关系,因为我可以在我的应用程序的其他部分使用matrix.h而没有任何问题。我认为它与Matrix是一个模板化的类有关,因为当我将Vector作为非模板化类的子类(例如SomeClass.h)时,一切都编译好了。

非常感谢任何可以提供帮助的人:)

2 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:6)

你错过了两件事。

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

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