質問ですが以下のコードのように、enum Barが
クラスFooの中でprivateなサブタイプとして定義されているときに、
enum Barで定義されている定数TAG1やTAG2を
ラムダ式の定義の中からクラス名修飾無しで使うにはどうしたらいいんですかね…
class Foo {
private:
enum Bar { TAG1, TAG2, TAG3 };
public:
enum Bar some_method();
enum Bar launch(std::function<enum Bar(int)> func);
};
Foo::Bar Foo::some_method() {
// メソッドの地の文
printf("TAG1=%d\n", TAG1); // これはクラス名修飾無しでもOK
// ラムダ式の定義
auto lambdaFunc = [=](int x)->enum Bar{
if (x == 1) {
return Foo::TAG1; // これはクラス名修飾しないとコンパイルエラー
} else {
return Foo::TAG2; // これもクラス名修飾しないとコンパイルエラー
}
};
// ラムダ式を使う
return launch(lambdaFunc);
}
C++相談室 part147
■ このスレッドは過去ログ倉庫に格納されています
150デフォルトの名無しさん
2020/01/02(木) 19:15:39.81ID:G5uvQucS■ このスレッドは過去ログ倉庫に格納されています