2012-08-15 5 views
0

xcode에서 링커 오류가 발생하며이를 이해하고 문제를 찾는 데 어려움을 겪고 있습니다. 이것은 내가지고있어 오류입니다 :링커 오류 : vtable이 누락되었습니다.

enter image description here


Instrument class은 다음과 같습니다

class Instrument { 

private: 

public: 

    virtual float getSample(Note &note); 
    Instrument(){} 

}; 

그리고 그것은 구현의 내 Synth class :

class Synth : public Instrument{ 

private: 
    Volume volume; 
public: 
    Synth(){} 
    void setVolume(float aVolume); 
    virtual float getSample(Note &note); 
}; 

그리고 내에서 악기를 회원으로 사용하고 있습니다.210 :

class Track { 
public: 
    bool muted; 
    Instrument instrument; 
Track(){ 
    this->muted = false; 
} 
}; 

어떤 아이디어로 인해 문제가 발생합니까? 또 하나의 질문이 있습니다. Track 개체가있는 경우 instrument 회원을 Synth으로 초기화하는 가장 좋은 방법은 무엇입니까? 이게 효과가 있니? 오류가 참고가 말한대로

Track track; 
track.instrument = Synth(); 
+1

구현에 대해 언급하는 것을 잊어 버렸습니다. 클래스 '함수. – SingerOfTheFall

답변

5

, 당신은 가상 함수의 정의를 제공해야하는없는 것 같아요 : Instrument::getSample(Note &note);

하지만 난 당신이 순수 가상 함수를 필요로 추측을합니다

class Instrument { 
//... 
public: 
    virtual float getSample(Note &note) =0; 
    Instrument(){} 
}; 

그렇지 않은 경우 더 많은 코드를 게시하고 다른 컴파일러에서 코드를 확인하십시오. 컴파일러가 버그가있을 수 있습니다.

+0

이것은 효과가 있습니다. 고맙습니다 – networkprofile