2014-09-02 58 views
-7

假设有两个Class1和Class2类。给定一个条件,我必须尽可能以最短的方式选择它们而不使用if-else。 意味着最少的代码行。 仅在编译时!!!如何从两个类中选择一个条件在C++中?

class class1{}; 
class class2{}; 

auto data = (((condition) ? class1 : class2) *)(variable) 
+1

编译时间?运行? “选择”是什么意思?在“选择”之后你会做什么?创建该类型的对象?调用成员函数? – 2014-09-02 05:14:42

+0

您的问题没有意义,请澄清 – P0W 2014-09-02 05:15:16

+0

请向我们展示一些*实际*代码,以说明您尝试解决的具体问题。现在这个问题太模糊,无法回答。 – NPE 2014-09-02 05:16:19

回答

0

假设您需要创建在对象取决于变量的编译时间,你可以尝试像下面

class class1{}; 
class class2{}; 

int main(int argc, char *argv[]) 
{ 
    constexpr bool variable =true; 

    /* x is object of type class1 or class2 depending on 
     compile time constant 'variable' 
    */ 

    typedef std::conditional<variable, class1, class2>::type x; 


    //std::cout << typeid(x).name() << '\n'; 
    return 0; 
} 

Here

+0

谢谢。它可能工作 – 2014-09-02 06:12:25