gpt4 book ai didi

c++ - 链接器错误 |收集 2 : error: ld returned 1 exit status

转载 作者:行者123 更新时间:2023-11-30 03:57:22 26 4
gpt4 key购买 nike

以下代码给我链接器错误:

#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 将是调用模板类的模板。所以请不要告诉我删除自动!

最佳答案

您还没有定义(提供主体)

virtual void myfunc();

的确,您不必定义您不使用的函数,但对于非纯虚函数则不然。将函数设为纯虚拟 (= 0) 或提供定义。

顺便说一下,

CMyclass a();

并没有按照您的想法行事。这没有定义 CMyClass 类型的对象。这声明了一个返回 CMyclass 的函数。去掉括号。

关于c++ - 链接器错误 |收集 2 : error: ld returned 1 exit status,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28054426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com