void foo(int)
{
}
class X
{
void foo()
{
}
void bar()
{
foo(42);
// error: no matching function for call to 'X::foo(int)'
// note: candidate is:
// note: void X::foo()
// note: candidate expects 0 arguments, 1 provided
}
};
왜 C++은 무료 함수 (올바른 서명이있는 유일한 함수)를 호출 할 수 없습니까?멤버 함수 숨기기 무료 함수
이 경우':: foo (42)'를 사용하여 외부 foo에 액세스 할 수 있습니다. [Ideone demo] (http://ideone.com/6HljO). 그러나 나는 네임 스페이스에 대해 많이 모른다. –
나는 이것을 C++의 하나의 아킬레스 건으로 생각한다. isempty (thing)와 같이 일반적인 오버로드 된 자유 함수 이름을 사용하는 것이 불가능합니다. isempty (thing)는 주어진 유형의 isempty에 과부하가 많이 걸리는 반면 thing.isempty()도 존재할 수 있습니다. 어리석은, 불행한, clunky. – Mordachai