0

可能重复:
什么是未定义的引用/未解决的外部符号错误,我该如何解决?

我不知何故得到了这个错误。这是我的代码:

#ifndef BASESTATION_H_
#define BASESTATION_H_

#include <list>
#include "Song.h"
#include <string>

using mtm::Song;
using std::list;
namespace stations {

class baseStation {
public:
    explicit baseStation(double frequency) : frequency(frequency) {}
    double getFrequency() const;
    bool getIsFullVersion() const;
    bool isInPlaylist(const string& author, const string& name) const;
    virtual void addSong(const Song& song);
    virtual const Song& getCurrentSong() const;
    virtual const SongPart& getCurrentlyPlayedPart(unsigned int time) const;
    virtual ~baseStation();

private:
    //keep it protected or not??
    double frequency;
    list<Song> playlist;
    list<Song>::iterator currentSong;
    bool isFullVersion;
};

我得到的错误是:在“显式”行上未定义对“vtable forstations::baseStation”的引用。

非常感谢。`

4

2 回答 2

0

您在此处发布的代码很好。我可以通过定义自己的 Song 和 SongPart 类来毫无问题地编译它(我必须这样做,因为它们是在 Song.h 中定义的)。

我假设您的“Song.h”正在做一些不寻常的事情。

于 2013-01-21T19:53:35.583 回答
0

这是链接器错误吗?

当编译器在 *.cpp 文件中找不到任何虚拟成员定义时(例如,如果您已内联定义了所有虚拟函数),则会发生此错误。链接器无法找出在哪个目标文件中为您的类生成虚拟指针表,因为在任何源文件中都没有定义任何虚拟函数,并且会生成此错误消息。解决方案是在 cpp 文件中定义至少一个虚拟成员。

于 2013-01-21T19:57:40.087 回答