0

case ステートメント内で wstring を定義しようとしています。また、case ステートメントから変数にアクセスしようとすると、スコープ外に戻ります。

そのため、switch() の外側で wstring を宣言し、switch() 内で定義しようとしています。しかし、これらのイベントを分離する方法がわかりません。

    wstring w1;

    switch (suit)
        {
        case 0:
            std::w1(stringOne);
            break;
        case 1:
            std::w1(stringTwo);
            break;
        case 2:
            std::w1(stringThr);
            break;
        case 3:
            std::w1(stringFou);
            break;
        }

最終的に、私は 3 つの LPCWSTR を連結 (...そしてリッスン...) しようとしており、std::wstringそれを行うために使用しています。私は、このタスクを達成するために他の手段を使用することにオープンです。

4

1 に答える 1

2

コンストラクタ/デストラクタの呼び出しをスキップするために、ケースにジャンプすることはできません。スイッチの外側と前に wstring を作成しても問題ありません。あなたは書くことによってそれを行います:

std::wstring wstr;

次に、スイッチ、および関連する各ケースで、wstr に割り当てます。または、それぞれのケースで、新しいクラスを構築することが合法である新しいブロック スコープを開きます。コードでは、次のようになります。

case 0:
{
   std::wstring w;
   // do whatever you want to do with string w...
   // ..
   // then let it 'hit' it's destructor 
}
break;
于 2015-08-14T18:30:25.187 に答える