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

任何想法是什么导致了问题?我还有一个问题:如果有一个Track对象,将它的instrument成员初始化为的最佳方法是Synth什么?这行得通吗?

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

1 回答 1

4

正如错误中的注释所说,您需要提供我猜缺少的虚函数的定义:Instrument::getSample(Note &note);

但我想你需要纯虚函数,让它:

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

如果不是这种情况,请发布更多代码并在不同的编译器上检查您的代码,可能是您的编译器有问题

于 2012-08-15T11:58:07.563 回答