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

The*_*ter 9 c++ inheritance templates class

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

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

template<class T>
class Matrix
{
public:
    // constructors, destructors and what not...
};
Run Code Online (Sandbox Code Playgroud)

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

#include <maths/matrix.h>

template<class T>
class Vector : public Matrix
{
public:
    // constructors, destructors and what not...
};
Run Code Online (Sandbox Code Playgroud)

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

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

Kon*_*lph 12

你需要继承具体的类,即Matrix<T>不仅仅是Matrix:

template<class T>
class Vector : public Matrix<T>
{
    …
};
Run Code Online (Sandbox Code Playgroud)


Naw*_*waz 6

你错过了两件事.

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

}; //<-------- second : semi-colon (same from Matrix class also)
Run Code Online (Sandbox Code Playgroud)