我有这个:
struct myClass{
multiset<string,binPred<string> > values ;
myClass(const char param1, const char param2) : values(less<string>())
{ }
} ;
我需要使用不同的仿函数初始化 values
成员,具体取决于 param1
和 {{1}的值} 即可。不幸的是,决定使用哪个仿函数的逻辑并不那么简单,一旦 param2
被构造,我就无法改变它的相关比较函子。
所以......我需要将所有决策逻辑放在成员初始化部分,但我不知道如何使用 values
运算符。
是否有可能在那里放置更复杂的陈述? (如?:
staments)
如果没有,有没有办法延迟 switch
的构建,所以我可以在构造函数的主体中初始化它?
感谢。
答案 0 :(得分:9)
调用函数:
myClass(const char param1, const char param2)
: values( MakeComplicatedDecision( xxx ) ) {
}
并将你的逻辑放在函数中。
答案 1 :(得分:4)
您可以使用静态成员函数来接受您拥有的参数并返回必要的值。这完全解决了问题,并允许清理易于调试的代码。
答案 2 :(得分:0)
您可以使用指向多集的指针来获取值,然后使用new
在构造函数中创建它。这会延迟构建,但它确实意味着少量的开销。