在下面的代码中,很明显函数定义
myFn
应该来自命名空间N
并且有两个参数。但编译器无法编译它。这是编译器(g++ 8.3)的限制还是C++标准规定的? #include <bits/stdc++.h>
using namespace std;
namespace N
{
// Same name function exists in class A
void myFn(int a, int b)
{
cout << a << ' ' << b << endl;
}
}
using namespace N;
class A {
public:
void myFn(int a)
{
#ifdef FINE
// Explicitly specify where should myFn definition come from
N::myFn(a, a);
#else
myFn(a, a);
#endif
}
};
int main()
{
A a;
a.myFn(3);
return 2;
}
#include <bits/stdc++.h>
。 - Daniel Langr