gpt4 book ai didi

c++ - 如何将参数传递给策略的构造函数?

转载 作者:太空宇宙 更新时间:2023-11-04 14:25:49 24 4
gpt4 key购买 nike

在代码中:

template<class T>
struct FactorPolicy
{
T factor_;
FactorPolicy(T value):factor_(value)
{
}
};

template<class T, template<class> class Policy = FactorPolicy>
struct Map
{
};

int _tmain(int argc, _TCHAR* argv[])
{
Map<int,FactorPolicy> m;//in here I would like to pass a double value to a
//FactorPolicy but I do not know how.
return 0;
}

已编辑 [for Mark H]

template<class T, template<class> class Policy = FactorPolicy>
struct Map : Policy<double>
{
Map(double value):Policy<double>(value)
{
}
};

最佳答案

一种方法是提供成员函数模板,该模板采用模板 arg 与策略一起使用。例如:

template<class T, template<class> class Policy = FactorPolicy> 
struct Map
{
template <typename V>
void foo(const Policy<V> &p)
{
}
};

然后,在主要部分:

Map<int,FactorPolicy> m;

m.foo(FactorPolicy<double>(5.0));

另一种可能性是通过向 Map 添加第三个模板参数,将其指定为 Map 模板实例化的一部分:

template<class T, template<class> class Policy = FactorPolicy, 
class V = double>
struct Map
{
void foo(const V &value)
{
Policy<V> policy(value);
}
};

然后:

Map<int,FactorPolicy,double> m;

m.foo(5.0);

关于c++ - 如何将参数传递给策略的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4064815/

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