4
네임 스페이스를 사용하지 않으면 다음과 같은 문제가 발생할 수 있습니다. 실제로 전화가 모호합니다. 나는 "stD :: swap을 사용했다"고 생각했다. 사용할 메소드를 정의합니다.다른 네임 스페이스가 있지만 오버로드 된 함수 호출이 모호합니다.
"int"이지만 "class"가 아닌 이유는 무엇입니까? 내가 대답을 사전에 대단히 감사합니다
../src/Test.h: In member function ‘void stD::aClass::F()’:
../src/Test.h:26:9: error: call of overloaded ‘swap(TEST::Dummy&)’ is ambiguous
swap(x);
^
../src/Test.h:26:9: note: candidates are:
../src/Test.h:17:6: note: void stD::swap(TEST::Dummy)
void swap(TEST::Dummy a){};
^
../src/Test.h:10:6: note: void TEST::swap(TEST::Dummy)
void swap(Dummy a){};
^
:
#include <memory>
namespace TEST {
class Dummy{};
void swap(Dummy a){};
void sw(int x){};
}
namespace stD {
void swap(TEST::Dummy a){};
void sw(int x){};
class aClass{
public:
void F()
{
using stD::swap;
TEST::Dummy x;
swap(x);
}
void I()
{
using stD::sw;
int b = 0;
sw(b);
}
};
}
이
는 오류 메시지입니다.
'F '가'stD'에 없으면'TEST :: swap'을 호출 할 가치가 있습니다. – Rakete1111
감사! 이것은 내 질문에 완전히 대답한다. 이제는 나에게 분명하다. – Lycosa