【发布时间】:2018-03-16 13:30:36
【问题描述】:
似乎无法找到错误所在。我认为不存在循环实施问题。我很确定所有 .h 文件都包含在它们需要的位置。 Array 继承自 BaseArray:
错误:
In file included from driver.cpp:6:0:
Array.h:10:1: error: expected class-name before ‘{’ token
{
BaseArray.h:
#ifndef _BASEARRAY_H_
#define _BASEARRAY_H_
#include <cstring>
template <typename T>
class BaseArray
{
public...
}
#include "BaseArray.inl"
#include "BaseArray.cpp"
#endif // !defined _BASEARRAY_H_
BaseArray.cpp:
#include "BaseArray.h"
#include <stdexcept>
#include <iostream>
//..Constructors, Destructors, Functions...
数组.h:
#ifndef _ARRAY_H_
#define _ARRAY_H_
#include "BaseArray.h"
#include <cstring>
template <typename T>
class Array: public BaseArray
{
public:
......
};
#include "Array.inl"
#include "Array.cpp"
#endif // !defined _ARRAY_H_
数组.cpp
#include "Array.h"
#include "BaseArray.h"
#include <stdexcept>
#include <iostream>
//
// Array
//
template <typename T>
Array <T>::Array (void): BaseArray<T>()
//...more and more code
【问题讨论】:
-
BaseArray是一个模板,所以需要一个类型,大概是class Array: public BaseArray<T>。 -
太棒了!那行得通。我对继承和模板真的很陌生,所以很多事情都在我的脑海中。
-
BaseArray.h 包含 BaseArray.cpp,BaseArray.cpp 包含 BaseArray.h。 Array.cpp 也有同样的问题。建议对包含的文件使用不同的扩展名,而不是形成自己的翻译单元
标签: c++ class oop templates inheritance