C++:"错误:预期类名在 ‘{’ 之前令牌”继承模板类时

发布于 2024-11-01 17:39:28 字数 679 浏览 0 评论 0 原文

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

我在 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)时,一切都可以正常编译。

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

I've looked around for a solution to my problem and found lots about cyclic references and namespace issues (neither apply in my case), but nothing like the problem I'm having.

I have a template class defined and implemented in maths/matrix.h:

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

I have another template class defined and implemented in maths/vector.h

#include <maths/matrix.h>

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

I get this error "expected class-name before ‘{’ token" in vector.h which is really bugging me. It's not anything to do with matrix.h and vector.h being in a maths sub-folder because I can use matrix.h in other parts of my application without any problems. I think it has something to do with Matrix being a templated class because when I make Vector a subclass of a non-templated class (SomeClass.h for example) everything compiles ok.

Many thanks to anyone that can help :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

错々过的事 2024-11-08 17:39:28

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

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

You need to inherit from the concrete class, i.e. from Matrix<T>, not merely Matrix:

template<class T>
class Vector : public Matrix<T>
{
    …
};
奢华的一滴泪 2024-11-08 17:39:28

你错过了两件事。

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

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

You're missing two things.

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

}; //<-------- second : semi-colon (same from Matrix class also)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文