1
下面的代碼給我鏈接錯誤:鏈接器錯誤| collect2:錯誤:LD返回1退出狀態
#include <iostream>
using namespace std;
class CBase
{
public:
virtual void myfunc();
CBase()
{
// constructor
}
};
class CMyclass: public CBase
{
public:
CMyclass(): CBase()
{
// constructor
}
void myfunc()
{
}
};
auto create_class()-> CMyclass
{
return CMyclass();
}
int main()
{
// auto sys_conrollable = create_class();
CMyclass a();
return 0;
}
運行編譯器是罰款:
g++ -g -Wfatal-errors -std=c++11 main.cpp -c -o main.o
鏈接器:
g++ -g -Wfatal-errors -std=c++11 main.o -o run
給出了這樣的錯誤:
main.o:(.rodata._ZTI8CMyclass[_ZTI8CMyclass]+0x10): undefined reference to `typeinfo for CBase' collect2: error: ld returned 1 exit status
刪除create_class
功能修復了錯誤。在原始代碼中,create_class
將是調用模板類的模板。所以請不要告訴我去除汽車!
@πάνταῥεῖ無關鏈接 – barej 2015-01-20 20:54:07
@πάνταῥεῖ我假設你甚至不明白的問題都沒有。它是一個具體的問題,你鏈接到一個普遍的問題。它就像喜歡一個頁面談論什麼是編程!擁有20K的聲譽並不會讓你變得正確。 – barej 2015-01-20 21:03:30
如何從鏈接副本[此答案](http://stackoverflow.com/a/12574403/1413395)不解釋您的問題? [請在你的問題中詳細說明](http://stackoverflow.com/posts/28054426/edit)你的情況在這裏沒有得到回答。你想在'CBase'類中聲明一個像'virtual void myfunc()= 0;'這樣的抽象函數嗎? – 2015-01-20 21:27:19