gpt4 book ai didi

c++ - 如何写一个模板类来存放不同的模板类

转载 作者:行者123 更新时间:2023-11-30 00:37:06 25 4
gpt4 key购买 nike

我有一个名为 Data 的模板类

template<class T> 
class Data
{
vector<T> Data_Container;
...
};

我想定义一个能够拥有多种数据类型的新类。

class Multi_Data
{
vector< Data<???> > Different_Datas;
}

如果我将 Multi_Data 定义为模板,我将一次只有一种类型。我如何编写一个类来像这样添加不同的模板:

Data< Type_A > DataA;
Data< Type_B > DataB;
Multi_Data Container;
Container->Add(DataA);
Container->Add(DataB);

最佳答案

您所描述的看起来像是 Boost.Any 的完美用例库,它提供了一种类型安全、统一的方式来存储多种不同类型的对象。我相信你可以使用 boost::any在这里让你的MultiData type 存储类型为 vector<boost::any> 的对象, 然后有一个像这样的函数来访问它:

template <typename T> void MultiData::add(const Data<T>& data) {
Different_Datas.push_back(data);
}

在这里,boost::any存储任意值,而模板包装器会阻止您插入不是 Data 实例化的值.

希望这对您有所帮助!

关于c++ - 如何写一个模板类来存放不同的模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14228503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com