class cippa{};
enum close{ cippa };
int main(){
new cippa(); //bad here
}
使用::cippa
しても役に立ちません。enum
またはclass
を別々に配置せずにこれを解決する方法はありnamespace
ますか?
class cippa{};
enum close{ cippa };
int main(){
new cippa(); //bad here
}
使用::cippa
しても役に立ちません。enum
またはclass
を別々に配置せずにこれを解決する方法はありnamespace
ますか?
を使用して曖昧さをなくしnew class cippa
ます。クラス名と列挙子 (または関数/変数) 名が同じスコープで宣言されている場合、クラス名は非表示になります。からアクセスできますclass name
。型名が列挙名の場合も同様です。あなたはそれにアクセスすることができますenum name
#include <unistd.h>
// oops, close is now hidden! but we know a trick..
enum close c = cippa;
C ++ 11の場合、
class cippa;
enum class close { cippa };
その場合、クラスcippa
と列挙型の値close::cippa
は衝突しません。
ちなみにそれは本質的にやっています
class close{
public:
enum enum_t{cippa};
};
ただし、代わりにを使用して列挙型にアクセスする
close
必要があります。同じまま。close::enum_t
close::cippa