我四处寻找问题的解决方案,发现了很多关于循环引用和 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/