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