예상대로 컴파일되지 않는 다음 코드가 있습니다. 나는 정적 멤버 함수를 가진 클래스와 그것을 사용하려고하는 헤더를 포함하는 또 다른 클래스를 가지고있다. 그것은 작동하지 않는 것 같습니다.정적 멤버 함수가 예상대로 작동하지 않습니다.
static bool validLocation(int _x) // within class A
{
return false;
};
클래스 B는 클래스 A를 포함하고 그 기능 중 하나에서 다음 호출이 : 목적을 읽기 위해 분명히 이러한 단순화
if (!(A::validLocation(180)))
continue;
을하지만, 왜이 허용되지 않습니다?
모호함을 드려 죄송합니다. 오류 메시지는 다음과 같습니다.
"A::validLocation(int)", referenced from: B::functionThatCallsThis() in B.o
Symbols not found.
Collect2: ld returned 1 exit status
정적 함수는 헤더 파일에 선언 된대로 public입니다.
컴파일러 오류 메시지입니다) 그것을위한 – 0xC0000022L
와우, 감사합니다. 비몽사몽. – jackz
을 업데이트하고 모든 네임 스페이스 ('::'로 시작)에서 이스케이프 처리를 시도한 다음 클래스의 네임 스페이스를 명시 적으로 정규화 했습니까? 아마'class B'는 A를 보지만 올바른 것이 아닙니다. 그것을 배제하기 위해 B를 A의 '친구'로 임시적으로 만들 수 있습니다 (그러면 숨겨진 멤버 기능 정도는 아닙니다). – 0xC0000022L