我可以为模板类的模板类型添加参数吗?
Can I Add Parameter for Template Type of Template Class
现在我有一个模板类作为基类,声明如下
template<class TKey, class TValue>
class BaseKeyValueData
{ ... }
我还声明了一个元素类,旨在替换上述基类中的 TKey 和 TValue
class BasicElement
{
BasicElement() = default;
BasicElement (const std::string& input) { ... }
}
然后我想从 BaseKeyValueData 创建一个派生类,并将 TKey 替换为 BasicElement,但仍将 TValue 保留为派生类的模板参数。声明如下
template <class T>
class DeriveValueClass() : BaseKeyValueData<BasicElement, T>
{
DeriveValueClass() : BaseKeyValueData<BasicElement, T>() {}
...
}
上面我实现的代码并且它可以工作。但是根据新的要求,我想使用字符串参数来初始化 BasicElement 实例。在上面的DeriveValueClass类中,它的默认构造函数使用BasicElement的默认构造函数(不带参数(。那么我如何使用参数在衍生值类构造函数中初始化基本元素。虚拟代码如下:
DeriveValueClass() : BaseKeyValueData<BasicElement(<parameterForBasicElement>), T>() {}
上面的代码在C++是非法的。我该如何实现?
提前感谢!
对于这个问题,它确实混淆了类型声明和实例初始化。对于 DeriveValueClass 声明,它只声明类型,而不与其构造函数相关。因此,如果要创建类型实例,它应该显式调用类型的构造函数。在我的 cpp 代码中,我有显式创建类型实例,例如:
boost::make_shared<TKey>()
这是考虑使用不同的构造函数来初始化实例的正确位置。
相关文章:
- 可变参数模板与使用元组在参数中添加不同的数据对
- 如何在OMNET++中添加专门的命令行参数?
- 如何将带有参数的愚蠢函数添加到愚蠢的执行器中?
- 如何使用主参数添加更多堆栈?
- 在C++中,如何将参数添加到"Args&&... args"参数列表中?
- 我如何将4个以上的参数添加到MIPS中的一个函数
- 如何在 c/c++ 中为参数添加选项?(视觉工作室平台2019)
- 将功能参数添加到向量
- 将参数添加到q_object构造函数
- 使用模板参数添加数据
- 如何将模板函数指针作为值参数添加到地图中
- 在指向另一个宏的可变参数宏中为每个参数添加前缀
- 基于模板参数添加成员函数和成员变量
- 仅当数组属于特定类型时,才将模板化参数添加到数组
- 是否为模板类的某些模板参数添加成员
- 如何在不破坏现有代码的情况下将输出参数添加到功能
- 将参数添加到该类别一个向量中包含的类中
- 将 -m32 参数添加到生成文件命令
- C++-不能将默认参数添加到类模板成员的越界定义中
- 在c++预处理器中为参数添加引号