2013-01-21 56 views
0

可能重複:
What is an undefined reference/unresolved external symbol error and how do I fix it?未定義的參考`虛表的站::基站」

不知何故,我得到這個錯誤。這是我的代碼:

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

,我得到的錯誤是:未定義的參考`虛表的站::基站」的‘明確的’路線。

非常感謝。#

+0

這個問題有很多重複,請務必在提問之前進行搜索。您可以在右側的「相關」欄中查找。 –

+0

你在某處定義你的函數嗎? – imreal

回答

0

你在這裏發佈的代碼很好。通過定義我自己的Song和SongPart類,我可以毫無問題地編譯它(我必須在Song.h中定義它們)。

我假設你的「Song.h」正在做一些不尋常的事情。

0

這是鏈接器錯誤?

如果編譯器在* .cpp文件中找不到任何虛擬成員定義(例如,如果已經定義了所有虛函數內聯),則會發生此錯誤。由於在任何源文件中都沒有定義虛函數並且會生成此錯誤消息,所以鏈接程序無法找到在哪個目標文件中爲您的類生成虛擬指針表。 解決方案是在cpp文件中至少定義一個虛擬成員。