0

xcodeでリンカーエラーが発生し、問題を理解して見つけるのに苦労しています。これは私が得ているエラーです:

ここに画像の説明を入力してください


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);
};

そして、私はInstrumentをメンバーとして使用していTrack classます:

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

問題を引き起こしているアイデアはありますか?そしてもう1つ質問があります。オブジェクトがある場合、そのメンバーを?としてTrack初期化するための最良の方法は何ですか?これは機能しますか?instrumentSynth

Track track;
track.instrument = Synth();
4

1 に答える 1

4

Note in error が言うように、欠落している仮想関数の定義を提供する必要があると思います:Instrument::getSample(Note &note);

しかし、純粋な仮想関数が必要だと思います。

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

そうでない場合は、さらにコードを投稿して、別のコンパイラでコードを確認してください。コンパイラにバグがある可能性があります

于 2012-08-15T11:58:07.563 に答える