0
class cippa{};

enum close{ cippa };

int main(){
    new cippa();    //bad here
}

使用::cippaしても役に立ちません。enumまたはclassを別々に配置せずにこれを解決する方法はありnamespaceますか?

4

2 に答える 2

4

を使用して曖昧さをなくしnew class cippaます。クラス名と列挙子 (または関数/変数) 名が同じスコープで宣言されている場合、クラス名は非表示になります。からアクセスできますclass name。型名が列挙名の場合も同様です。あなたはそれにアクセスすることができますenum name

#include <unistd.h>

// oops, close is now hidden! but we know a trick..
enum close c = cippa;
于 2012-11-27T20:32:38.483 に答える
1

C ++ 11の場合、

class cippa;
enum class close { cippa };

その場合、クラスcippaと列挙型の値close::cippaは衝突しません。

ちなみにそれは本質的にやっています

class close{
public:
  enum enum_t{cippa};
};

ただし、代わりにを使用して列挙型にアクセスする close必要があります。同じまま。close::enum_tclose::cippa

于 2012-11-27T21:44:27.367 に答える