一般類的定義和實(shí)現(xiàn)組織方式:將定義放在.h文件中,實(shí)現(xiàn)放在.cpp文件中。

     C++中的模板是C++在發(fā)展過程中新添的新生力量,template的聲明和實(shí)現(xiàn)不同于一般的類定義與實(shí)現(xiàn)和函數(shù)的聲明與定義,故在含有模板的C++程序的組織方式就不同于一般的定義與實(shí)現(xiàn)相分離的方式。

      我曾經(jīng)遇到的問題:  當(dāng)在GUN中編譯時(shí)老是無法通過,錯(cuò)誤信息大概是無法找到函數(shù)。然后將程序搬到VC6下編譯,同樣出現(xiàn)連接錯(cuò)誤。

      問題原因:

      C++標(biāo)準(zhǔn)中說明:在使用模板時(shí)C++支持兩種程序組織方式:包含模式與分離模式。包含模式也就是將類的定義與實(shí)現(xiàn)同放在.h 文件中,分離模式也就是將定義與實(shí)現(xiàn)分離,也就是我采用的方式。但很多編譯器不支持分離模式,只支持包含模式。

    通常采用的解決方法:

    1. 干脆直接使用包含模式,即將模板類的定義與實(shí)現(xiàn)同寫在.h文件中。(我不太喜歡這種寫法)

    2. 使用分離模式,但是在使用時(shí)不引用模板類的頭文件,而是引用模板類的實(shí)現(xiàn)文件。(不太符合一般習(xí)慣)

    3. 使用分離模式,在模板類頭文件中引用實(shí)現(xiàn)文件。(這個(gè)方法我在VC6和Dev C++下都沒有成功,不知道是哪里出了問題)

    4. 使用分離模式,在模板類中頭文件中實(shí)例化一個(gè)你需要對(duì)象。(十分笨拙的方法,不利于使用)

    5. 使用分離模式,但是另外定義.h文件,在這個(gè)文件中引用模板的頭文件和實(shí)現(xiàn)文件,在使用時(shí)引用這個(gè)另外定義的.h文件。(覺得這個(gè)方法還不錯(cuò),不過也不知道有什么缺點(diǎn))