2014-09-02 60 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