2017-02-09 2 views
-3

動作させるための簡単な方法があり、それはALL

const std::string foo[] = { 
    if(<my_condition>) 
     "Test0", 
    "Test1", 
    "Test2", 
    "Test3" 
}; 

は、私はそれを動作させるためにしようとしていると、コードを繰り返しません。

簡単な解決策はありますか?

TIA!

+2

あなたはこれをよりよく説明する必要があります。 –

+0

英語でこれが何をしているのか、それはあまり意味がありません – asimes

答えて

0

私は答えに挑戦しますが、より具体的に質問を編集する必要があります。

配列constを使用する場合は、コンパイル時に初期化値を決定する必要があります。
これは、条件がコンパイル時に評価される必要があることを意味します。あなたはこれを実現するために取ることができる

一つの経路は、マクロ経由です:

#define CONDITION false 

const std::string foo[] = { 
    #if CONDITION 
     "Test0", 
    #endif 
    "Test1", 
    "Test2", 
    "Test3" 
}; 

また、
あなたはstd::vector<std::string>を使用して、実行時にリストの構築を検討することをお勧めします。

+0

... 'std :: vector 'をとり、それを 'constexpr'にしようとしています。 – luk32