[問題] c++ template undefined reference

作者: yshihyu (yshihyu)   2017-09-23 01:31:11
開發平台(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()'
作者: yshihyu (yshihyu)   2017-09-23 02:29:00
AbstractOptimizationProblem.h:10:5: error: initializespecified for non-virtual method改成 = 0 編譯變成這樣錯誤
作者: kkmoon5566 (56小弟)   2017-09-23 02:22:00
把constructor 設爲pure virtual functionAbstractOptimizationProblem(int maxEvaluations, int maxIterations, ConvergenceChecker<PAIR>* checker<PAIR>* checker)=0;
作者: kkmoon5566 (56小弟)   2017-09-23 11:48:00
講錯了= =" sorry這樣好像可以了~ https://pastebin.com/x7csU8Cd原因是compiler不知道template class要支持什麼dataas the compiler does not know, while compiling Stack.cpp by itself, the data types it should providesupport for.來源:https://tinyurl.com/y7qlx77b
作者: yshihyu (yshihyu)   2017-09-24 01:57:00
嗯嗯~有部份錯誤有解! 不過 main.cpp:(.text+0x28): unAbstractOptimizationProblem<Evaluation>::AbstractOpti::AbstractOptimizationProblem(int, int, ConvergenceCh我在main.cpp 把 AbstractOptimizationProblem(maxEvalua改成 AbstractOptimizationProblem<Evaluation>(maxEvalu

Links booklink

Contact Us: admin [ a t ] ucptt.com