-3

次のコードでは、エラーが発生します。

「p」への参照があいまいです

なぜそうなのですか?どうすればそれを取り除くことができますか?出力として「79」を取得したい。誰か光を投げてください。御時間ありがとうございます!

int p=3;
namespace {int p=7;}
namespace {int q=9;}

main()
{    
    cout << p << q;
}
4

2 に答える 2

4

これを削除します

int p=3;

またはこれ

namespace {int p=7;}

または、最初の宣言を名前空間内に配置することもできます。

namespace foo
{
  int p=3;
}

または、匿名の名前空間に名前を付けます。

namespace bar {int p=7;}

その後

main(){
    std::cout <<bar::p << q;
}
于 2013-02-24T14:42:08.223 に答える
4

@juanchopanza は良い解決策を提案しています。もう 1 つの例を次に示します。修飾名を使用して、グローバル名前空間で宣言された変数を参照します。

#include <iostream>

int p=3;
namespace {int p=7;}
namespace {int q=9;}

int main()
{
    std::cout << ::p << q;
    //           ^^^
}
于 2013-02-24T14:44:50.773 に答える