ヘッダーのクラス内に列挙型定義があります。
namespace A {
class B {
public:
enum Value {
VALUE1 = 1,
VALUE2 = 2,
};
};
}
そして、次のように、接頭辞なしでソースファイルでその値を使用したい:
#include "header"
int main() {
someFn(VALUE1);
return 0;
}
しようとしましusing A::B::Value;
たが、clang でエラーが発生します。
using 宣言はクラス メンバーを参照できません
列挙型をクラスの外に移動しても:
namespace A {
enum Value {
VALUE1 = 1,
VALUE2 = 2,
};
}
と do using A::Value;
、エラーはなくなりましたが、コンパイラーは次のことについて不平を言いますVALUE1
:
宣言されていない識別子「VALUE1」の使用
列挙型が別の場所で定義されている場合、プレフィックスなしで列挙型の値を使用する方法はありますか? - #define
s の使用は論外です。
方法がない場合、C++ 標準でそのような動作を実装する際に考えられる問題は何ですか?