C++: "error: expected class-name before ‘{’ token"继承模板类时

标签 c++ class templates inheritance

我四处寻找问题的解决方案,发现了很多关于循环引用和 namespace 的问题(均不适用于我的情况),但与我遇到的问题完全不同。

我在 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”,这让我很烦。这与位于 maths 子文件夹中的 matrix.h 和 vector.h 没有任何关系,因为我可以在我的应用程序的其他部分使用 matrix.h 而没有任何问题。我认为这与 Matrix 是模板化类有关,因为当我将 Vector 设为非模板化类(例如 SomeClass.h)的子类时,一切都可以正常编译。

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

最佳答案

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

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

关于C++: "error: expected class-name before ‘{’ token"继承模板类时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693954/

相关文章:

.net - 在接口(interface)中引用实现基类型

c++ - 为派生类特化类模板方法

templates - azure 资源模板: Can I assign complex variable to property?

c++ - 样式表的变化

c++ - 无法在程序中指定文件路径前缀

c++ - 在头文件中重新定义一个类

C++:部分模板特化

c++ - 如何判断给定路径是目录还是文件? (C/C++)

c++ - 修改 C++11 atomic bool 需要多少个时钟周期?

Java:LinkedList 类作为堆栈和队列