C++中的模板参数继承
Template Parameter Inheritance in C++
我有一段时间没有写C++了,所以我有点生疏。如果我有这样的课程:
class JsonType{
protected:
map<string, JsonType>* objects;
}
以及从中继承的类:
class JsonObject : public JsonType{
public:
JsonObject(){
this->objects = new map<string, JsonObject>();
}
}
为什么我会得到一个编译器错误cannot convert...JsonObject...to...JsonType
?既然JsonObject是JsonType,这难道不应该合法吗?
您可以将JsonObject对象添加到映射中,但类型不匹配,无法进行初始化。
编辑:您必须将其初始化为:
this->objects = new map<string, JsonType>();
但如果你有任何一个对象:
JsonType js = new JsonType();
或
JsonObject js2 = new JsonObject();
或
JsonType js3 = new JsonObject();
您可以将这些对象中的任何一个添加到如上所述初始化的映射中。
objects
的value_type
不使用JsonObject
,而是使用JsonType
s。
换句话说,您正在分配错误类型的map
以存储到objects
中。
相关文章:
- 为什么C++构造函数在继承中需要默认参数?
- C++接口继承不同的参数方法
- 如何在继承层次结构中调用具有默认参数的构造函数?
- 模板的继承参数设置
- 使用多参数包可变参数模板继承类
- 使用继承初始化C++中的参数
- 可变参数模板和具有继承的默认值
- C++ 模板元编程:从模板模板参数继承
- 有没有一种干净(更)的方法将 CRTP 与可变参数继承混合在一起?
- 使用 SFINAE 检查模板参数继承
- 从Swift中的通用参数继承的替代方案
- C++中的模板参数继承
- 使用 Boost 确保模板参数继承自某个类
- 模板函数参数继承
- C++:从模板参数继承
- 模板类参数继承
- 从模板参数继承是不好的做法
- 从模板参数继承类
- 使用内部类型作为模板参数继承模板类
- 如何以抽象类作为参数继承和实现纯虚方法