C++:当继承一个模板类时出现“error: expected class-name before '{' token”的错误

9

我已经寻找了解决我的问题的方案,发现很多关于循环引用和命名空间问题的内容(但这些都不适用于我的情况),但没有类似我遇到的问题的解决方案。

我在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中遇到了“expected class-name before ‘{’ token”错误,这真的很困扰我。它与matrix.h和vector.h位于数学子文件夹中无关,因为我可以在应用程序的其他部分使用matrix.h而没有任何问题。我认为这可能与Matrix是一个模板类有关,因为当我将Vector作为非模板类(例如SomeClass.h)的子类时,一切都可以编译通过。
非常感谢任何能提供帮助的人 :)
2个回答

13

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

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

6

您缺少两件事。


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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接