【发布时间】:2018-03-24 13:27:56
【问题描述】:
我不明白为什么会收到错误“对重载函数的模糊调用”。 在“main”之前,我声明使用命名空间“second”。 我的预期输出是:
这是第一个 foo
这是第二个 foo
这是第二个 foo
#include <iostream>
using namespace std;
namespace first {
void foo() {
cout << "this is the first foo" << endl;
}
}
namespace second {
void foo() {
cout << "this is the second foo" << endl;
}
}
void foo() {
cout << "this is just foo" << endl;
}
using namespace second;
void main() {
first::foo();
second::foo();
foo();
}
【问题讨论】:
-
您的命名空间中有两个
foos。您现在应该使用::foo()或second::foo()。 -
你的期望是错误的。当您声明
using namespace second时,您使用second扩展工作命名空间。为了明确你想从哪个初始工作区调用函数,你应该使用<namepspace>::foo,全局命名空间的名称为空。 -
不要使用
using namespace ...See this article
标签: c++ namespaces