-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 提出了一个很好的解决方案。这是另一个:使用限定名称来引用在全局命名空间中声明的变量:

#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 回答