作者yshihyu (yshihyu)
看板C_and_CPP
標題[問題] c++ template undefined reference
時間Sat Sep 23 01:31:11 2017
開發平台(Platform): (Ex: Win10, Linux, ...) Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) g++
https://www.sendspace.com/file/55crup
上面網址是我程式碼 ...
g++ AbstractOptimizationProblem.cpp main.cpp
我程式馬里面有用到 template 但是我不太熟template ! 懂的朋友可以幫我看一下原因!
Thanks
下面是錯誤訊息
/tmp/ccQ0iTvh.o: In function
`LocalLeastSquaresProblem::LocalLeastSquaresProblem(int, int,
ConvergenceChecker<Evaluation>*)':
main.cpp:(.text+0x28): undefined reference to
`AbstractOptimizationProblem<Evaluation>::AbstractOptimizationProblem(int,
int, ConvergenceChecker<Evaluation>*)'
/tmp/ccQ0iTvh.o:(.rodata._ZTV24LocalLeastSquaresProblem[_ZTV24LocalLeastSquaresProblem]+0x10):
undefined reference to
`AbstractOptimizationProblem<Evaluation>::getEvaluationCounter()'
/tmp/ccQ0iTvh.o:(.rodata._ZTV24LocalLeastSquaresProblem[_ZTV24LocalLeastSquaresProblem]+0x18):
undefined reference to
`AbstractOptimizationProblem<Evaluation>::getIterationCounter()'
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.181.255.94
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1506101475.A.142.html
1F:推 kkmoon5566: 把constructor 設爲pure virtual function 09/23 02:22
2F:→ kkmoon5566: AbstractOptimizationProblem(int maxEvaluations, in 09/23 02:22
3F:→ kkmoon5566: t maxIterations, ConvergenceChecker<PAIR>* checker 09/23 02:22
4F:→ kkmoon5566: <PAIR>* checker)=0; 09/23 02:23
5F:→ yshihyu: AbstractOptimizationProblem.h:10:5: error: initialize 09/23 02:29
6F:→ yshihyu: specified for non-virtual method 09/23 02:29
7F:→ yshihyu: 改成 = 0 編譯變成這樣錯誤 09/23 02:30
8F:推 kkmoon5566: 講錯了= =" sorry 09/23 11:48
10F:推 kkmoon5566: 原因是compiler不知道template class要支持什麼data 09/23 20:32
11F:→ kkmoon5566: as the compiler does not know, while compiling Sta 09/23 20:32
12F:→ kkmoon5566: ck.cpp by itself, the data types it should provide 09/23 20:32
13F:→ kkmoon5566: support for. 09/23 20:33
15F:→ yshihyu: 嗯嗯~有部份錯誤有解! 不過 main.cpp:(.text+0x28): un 09/24 01:57
16F:→ yshihyu: AbstractOptimizationProblem<Evaluation>::AbstractOpti 09/24 01:58
17F:→ yshihyu: ::AbstractOptimizationProblem(int, int, ConvergenceCh 09/24 01:58
18F:→ yshihyu: 我在main.cpp 把 AbstractOptimizationProblem(maxEvalua 09/24 02:00
19F:→ yshihyu: 改成 AbstractOptimizationProblem<Evaluation>(maxEvalu 09/24 02:00