데이터 유형이 있으며 해당 유형의 변수를 인스턴스화 할 수 있습니다. 이 같은 :런타임에 "undefined symbol", C++
FetchAddr faddr(VirtualMemoryAddress(0x0a));
FetchAdr의 정의는 다음과 같습니다
struct FetchAddr {
VirtualMemoryAddress theAddress;
FetchAddr(VirtualMemoryAddress anAddress)
: theAddress(anAddress)
{ }
};
지금은 개인 (또는 공용)
class FLEXUS_COMPONENT(BPred) {
static FetchAddr faddr;
public:
FLEXUS_COMPONENT_CONSTRUCTOR(BPred)
: base(FLEXUS_PASS_CONSTRUCTOR_ARGS)
{
faddr = VirtualMemoryAddress(0x0a);
}
...
}
이 매크로를 가정 변수가 정의되어있다 faddr 클래스가 정확히.
코드를 컴파일하고 아무 문제없이 연결할 수 있습니다. 그러나 프로그램을 시작하면 다음과 같이 표시됩니다.
"undefined symbol: _ZN6nBPred14BPredComponent8faddr"
faddr에 대한 기호가 없습니다.
그 어떤 아이디어라도 있으십니까?
정적 변수를 피할 수있는 방법이 있습니까? "statis"키워드를 제거하려고했지만 컴파일 오류가 발생합니다 : BPredImpl.cpp : 36 : error : 'FetchAddr :: FetchAddr()'에 대한 호출과 일치하는 함수가 없습니다. – mahmood
"비 정적"접근 방식을 시도했는데 제대로 작동합니다. – mahmood