gpt4 book ai didi

c++ - 我需要一个非模板解决方案

转载 作者:行者123 更新时间:2023-11-27 22:59:28 24 4
gpt4 key购买 nike

我有一个这样定义的类

class A
{
private:
map<int,vector<int>> m;
public:
vector<int> GetJsonVal(int k)
{
return m[k];
}
};

我想把它改成这样

template<class T>
class A
{
private:
map<int,T> m;
public:
T GetJsonVal(int k)
{
return m[k];
}
};

但是,我还有许多其他地方明明只使用类型 A , 所以如果我把我的类(class)改成后者,我必须修正很多,即将全部改成 A<type> ,我不想要。在那些地方我只是做void func(A*p)A& r=....

那么,我怎样才能同时使用即 A<float>A我喜欢的任何地方?

最佳答案

因此,想到的最简单易读的解决方案是 type alias :

template <typename T>
class Tool {
private:
map<int,vector<T>> m;
public:
vector<T> GetJsonVal(int k) {
return m[k];
}
};

using A = Tool<int>;

所以现在旧代码可以继续使用A , 所有新代码都可以使用 Tool<int>或其他类型别名。

关于c++ - 我需要一个非模板解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29222973/

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