gpt4 book ai didi

c++ - std::set 没有特定定义的模板类

转载 作者:太空宇宙 更新时间:2023-11-04 16:28:50 26 4
gpt4 key购买 nike

假设我有以下类(class):

template<typename T>
class Value {
public:
Value(std::string name, T value) : name(name), value(value) { }
T const &value() throw() { return value }
std::string const &name() throw() { return name }
private:
std::string name;
T value;
};

然后我想做类似的事情:

class Group {
public:
Group(std::string name) : name(name) { }

template<typename T>
void add_value(std::string const &name, T const &val) throw() {
Value<T> tmp(name, val);
values.insert(tmp);
return;
}

private:
std::string name;
std::set< Value<????> > values; // HERE BE MY QUESTION
}

具体来说,我想存储Value在同一 std::set 中的许多模板形式中(例如,将 Value<int>Value<float> 存储在同一集合中)。

最佳答案

你不能因为Value<T>Value<X>是完全不同且几乎不相关的类型,例如 intstring (当 T != X 时)。在您的情况下,它们非常不同,因为它们实际上存储了 T本身,这意味着如果不同 T s 大小不同,Value<T> s 将是不同的大小。 (这不是原因,只是一个原因。)

您可能想尝试使用多态性,使 Value<T>从基类继承,以便您可以存储指向该基类的指针,该基类可以指向 Value<T>在下面,哪里T是您的模板支持的任何类型。

关于c++ - std::set 没有特定定义的模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321742/

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