실수로 링크 오류가 발생했습니다. 아,링크 타임에 멤버 함수를 찾을 때 링커에서 액세스 수준을 비교합니까?
//a.h
class A
{
int a;
#ifdef AAA
public:
#endif
int getA();
}
//a.cpp
include "a.h"
int A::getA()
{
return a;
}
//test.cpp
#include "a.h"
int main()
{
A a;
a.getA();
return 0;
}
이 세 파일이 개 프로젝트에 있고 프로젝트 A의 a.cpp가있는 AAA 매크로 프로젝트 테스트에서의 Test.cpp에 정의되지 않은 : 프로그램은 다음과 같이 다소이다 which AAA 매크로가 정의됩니다. 그리고 프로젝트 테스트는 프로젝트 A에서 denfts합니다. 그런 다음 링크 오류가 발생합니다. 나는 Visual Studio 2008에서이 테스트를 수행했습니다.
제 질문은 이것입니다. "연결시 멤버 함수 심볼을 찾을 때 링크가 액세스 수준을 비교합니까?" 이전의 의견으로는 액세스 수준이 컴파일에만 적용됩니다. 그러나이 경우 액세스 수준이 링크 시간에 영향을 미칠 수 있습니다.