代码之家  ›  专栏  ›  技术社区  ›  GetFree

成员初始化部分中的复杂语句?

  •  2
  • GetFree  · 技术社区  · 15 年前

    我有这个:

    struct myClass{
        multiset<string,binPred<string> > values ;
    
        myClass(const char param1, const char param2) : values(less<string>())
        { }
    } ;
    

    我需要初始化 values 具有不同函数的成员,具体取决于 param1 param2 . 不幸的是,决定使用哪个函数的逻辑并不那么简单 价值观 无法更改其关联的比较函数。

    所以…我需要将所有的决策逻辑放在成员初始化部分,但我不知道如何使用 ?: 操作员。
    是否可以在其中放入更复杂的语句?? switch 雄蕊)

    如果没有,是否有办法推迟 价值观 所以我可以在构造函数的主体中初始化它??

    谢谢。

    3 回复  |  直到 15 年前
        1
  •  4
  •   sharptooth    15 年前

    您可以使用静态成员函数,该函数将接受您拥有的参数并返回必要的值。这完全解决了问题,并允许清理容易调试的代码。

        2
  •  9
  •   anon    15 年前

    调用函数:

    myClass(const char param1, const char param2) 
                 : values( MakeComplicatedDecision( xxx ) ) {
    }
    

    把你的逻辑放到函数里。

        3
  •  0
  •   Jesse Rusak    15 年前

    可以使用指向多集的指针作为值,然后使用 new 在构造函数中创建它。这将延迟施工,但这确实意味着少量的开销。