【发布时间】:2013-10-26 20:05:29
【问题描述】:
我有一个抽象基类,它包含一个数组以及两个或多个希望在基类中有一个稍大的数组的继承类。
我尝试通过使用模板来解决这个问题:
template <int arraySize>
class Baseclass {
public:
uint16_t arr[arraySize];
};
class InheritedClass :
public Baseclass <5> {};
我现在面临的问题是: 每当我使用指向某个基类对象的指针时,编译器都会抱怨:
类模板“Baseclass”的参数列表丢失
我想我明白这里发生了什么:没有模板参数的基类现在不是一个完整的类型 - 但是编译器需要一个。
因此我想知道 - 是否有一种(更好的)方法来实现我想要做的事情,而不是在 InheritedClass 中分配数组并将指针向下传递给 Baseclass?
提前谢谢你!
【问题讨论】:
-
使用向量而不是数组。
-
您的代码可以工作,但听起来您尝试使用指向模板的指针 (
Baseclass*) 而不是指向基类的指针。这当然行不通:模板不是类型。 -
@Konrad Rudolph:尝试使用
Baseclass *可能源于希望在层次结构中有一个公共基类。这可能是实际需要的。 -
@user2923748:为了理解“你想要做什么”,我们需要知道你是否关心在你的层次结构中有一个公共基类。你呢?
-
谢谢,我通过定义一个带有虚函数的非泛型基类解决了这个问题。
标签: c++ templates inheritance