[解決済み] 関数呼び出し時に「制御の移行が初期化をバイパスする:」を切り替える
2022-03-02 06:03:20
質問
以下のスイッチをビルドしようとすると、"transfer of control bypasses initialization of:"というエラーが表示されます。
switch (retrycancel)
{
case 4: //The user pressed RETRY
//Enumerate all visible windows and store handle and caption in "windows"
std::vector<MainHandles::window_data> windows = MainHandles().enum_windows().get_results();
break;
case 2:
//code
}
私がenumerate関数を呼んでいることと関係があるようです。もし、switchの中から関数を呼び出すことが許されないのであれば、このような問題の回避策はあるのでしょうか?
解決方法は?
C++標準の6.6.4項を参照してください。
goto文は無条件に に制御を移します。 で示される識別子を持つ。この 識別子は、ラベル(6.1)でなければならない。 でなければならない。
C++標準の6.7項を参照してください。
に転送することは可能です。 ブロックがありますが をバイパスする方法ではありません。 初期化を伴う宣言 . A からジャンプするプログラム ローカル変数が自動的に 保存期間がスコープ内にない場合から を使用することはできません。 その変数がPODでない限り、不正な 型 (3.9) で宣言され、かつ イニシャライザー
強調表示
は私が追加しました。以来
switch
は本当に
goto
という動作が発生します。これを解決するために、どうしても
switch
switch (retrycancel)
{
case 4:
{
const std::vector<MainHandles::window_data> windows(
MainHandles().enum_windows().get_results()
);
break;
}
case 2:
//code
}
にリファクタリングするか
if
/
else
if (retrycancel == 4) {
const std::vector<MainHandles::window_data> windows(
MainHandles().enum_windows().get_results()
);
} else if (retrycancel == 2)
// code
} else {
...
}
を作成することで何を達成したいのか、私には明らかではありませんが。
windows
vector
の中に
switch
ので、設計を見直す必要があるかもしれません。
備考
を追加しました。
const
の修飾子を
windows
というのは、あなたの例では修正されていません。
関連
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] 関数/メソッドのキーワード 'inline' はいつ書けばよいのですか?
-
[解決済み】コールバックをわかりやすく説明するには?ある関数から別の関数を呼び出すのとはどう違うのですか?
-
[解決済み】60秒ごとに関数を呼び出す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】C++の余分な資格エラー
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。