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)
你错过了两件事.
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)
| 归档时间: |
|
| 查看次数: |
5162 次 |
| 最近记录: |