![](/img/trans.png)
[英]Error 'initializer does not name a non-static data member or base class' when the initializer is the base class name
[英]Issues with template classes and inheritance - 'List' does not name a non-static data member or base class
我对c ++还是比较陌生,很难弄清楚我在做什么。 我希望我的描述不要太混乱,但是我要进行两个单独的类层次结构。 两者的基础都是类模板。
类的层次结构如下
template <class T>
class Order {}
// StoreOrder inherits from Order
class StoreOrder: public Order<Item *> {}
类层次结构二如下。 棘手的部分在OrderList中
template <class T>
class List{}
// OrderList inherits from List
class OrderList : public List<StoreOrder *>{}
OrderList::OrderList(): List(), DatabasePath(""){}
当我将StoreOrder作为List模板类型传递时,在构造函数中收到一条错误消息:
'List' does not name a non-static data member or base class
在我使用过的所有其他情况下,所有类均能正常工作,因此我认为这与StoreOrder和OrderList都从模板类派生的事实有关。 任何帮助都会很棒。
代替:
OrderList::OrderList(): List(), DatabasePath(""){}
采用:
OrderList::OrderList(): List<StoreOrder *>(), DatabasePath(""){}
List
不是类型。 List<StoreOrder*>
是一种类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.