2014-01-06 47 views
-1

MyTask.h虛函數解析的外部錯誤

class MyTask 
{ 
    virtual std::ostream& show(std::ostream &os) const ; 
}; 

MyTask.cpp

std::ostream& MyTask::show(std::ostream &os) const 
{ 
os << "Task(" << this->id << "):\t Processing time:" << this->p << "\t Weight:"<< this->w ; 
return os; 
} 

我得到一個未解決的外部鏈接錯誤,當我添加在頭文件虛擬字。我已經檢查過類似的問題,但問題是該函數未定義,或者它不是純虛擬的。

編輯: 確切的錯誤是:

MiniOS.obj : error LNK2001: unresolved external symbol "public: virtual class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall SimOS::MyTask::show(class std::basic_ostream<char,struct std::char_traits<char> > &)const " ([email protected]@[email protected]@[email protected][email protected]@[email protected]@@[email protected]@[email protected]@Z) 

所以我覺得這個問題是別的東西,任何想法?

+0

錯誤的確切描述是什麼? –

+0

我添加了確切的描述,謝謝。 –

+0

@YochaiTimmer我這樣做,它不工作:( –

回答

0

問題是我將MyTask.cpp文件作爲現有項目添加到項目中。由於VS不會將MyTask.cpp複製到當前項目中,因此我必須從項目中刪除該文件,然後將其複製到當前項目,然後重新整理。 謝謝大家的幫助。

+0

我不明白...如果它不復制它, Visual Studio不會編譯它? – Liviu

+0

我不明白究竟做了什麼,但在VS2008 Express Edition上試用它 –

+0

所以你說它編譯時沒有'virtual',但是你將文件複製到了當前的項目文件夾中,奇蹟般的,它工作。你問我安裝該編譯器來解釋你的巫術在這裏:)? – Liviu