我很抱歉我很確定這是一個相當愚蠢的問題,但我無法讓它工作!Dev-C++中的多個文件,鏈接器錯誤。模板
我也不確定什麼信息是太多的信息,所以我可能不會提供足夠的信息,所以也很抱歉 - 只是問。
我開始在main.cpp中編寫一個類,它變得很大,所以我決定將它移到不同的源文件。我並不太確定如何做到這一點,也無法找到任何有助於解決互聯網資源(因此問題)的具體問題。
我從類定義開始,包括主程序函數上面的所有函數定義。這運行良好。然後我把它分成兩個獨立的部分。主函數上方的類聲明(我認爲這是正確的術語)以及主函數下面的函數定義。
這也運行得非常好。我開始將類聲明切成一個頭文件。這個頭文件的形式
#ifndef INC_MATRIX_H
#define INC_MATRIX_H
class matrix{
//ETC
};
#endif
我所讀的地方是有用的,但我不完全知道爲什麼,我認爲這是停止的功能重新聲明如果頭被包含不止一次。
所以目前我們有這個頭文件以及其他包括在內。然後是主函數,然後是主函數下面的函數定義。這也編譯和運行非常好。
我採取的下一步是將函數定義切割成它們各自的.cpp文件。對這個.cpp文件唯一的補充是一些額外的包含必須被添加到頂端(特別是iostream和cstdlib)。此外還包括了matrix.h文件。
在這個配置中,當我嘗試編譯和運行代碼時,Dev-C++會引發鏈接器錯誤。具體地說它們是形式
[連接子錯誤]未定義參考來
matrix <bool>::matrix(int, int)
和代碼不運行(明顯)。 我該如何解決這個問題?提前致謝。
編輯:我們發現這是由於它是一個模板類,並且在matrix.cpp文件的範圍內,模板沒有引入到bool類型中。我現在想弄清楚如何解決這個問題,而不需要添加大量的代碼來分別讓每個函數接受每個給定的類型。 哦,我很欣賞我可以在頭文件中定義函數。但我認爲我們並不打算這麼做?我認爲這個想法是,你只是簡單地包含聲明。
這個問題是「教我如何編程!」雖然互聯網是偉大的,但所有的書籍仍然是學習基礎知識的更好方式。谷歌搜索和SO問題只會讓你到目前爲止。一旦你獲得了一些基本面,他們會更好地回答有針對性的問題。 – 2009-12-19 20:27:32