首页 >后端开发 >C++ >为什么我的 C 代码会产生'未定义的类型信息引用”错误?

为什么我的 C 代码会产生'未定义的类型信息引用”错误?

DDD
DDD原创
2024-12-04 12:34:10669浏览

Why Does My C   Code Produce

理解“g undefined reference to typeinfo”错误

当遇到“undefined reference to typeinfo”链接器错误时,深入研究至关重要这些消息背后的根本原因。一个潜在的原因在于声明虚拟函数而不提供其定义。

虚拟函数允许多态性,使派生类能够覆盖从其基类继承的方法并提供不同的实现。但是,当在没有定义的情况下声明虚拟函数时,编译器会指示该实现是在其他地方提供的。这意味着链接器将在链接阶段尝试查找丢失的定义,引用其他编译单元或库。

要消除此错误,虚拟函数必须附有定义。这会将函数声明与其实现相关联,从而防止链接器稍后尝试解析引用。已定义的虚函数显示为:

virtual void fn() { /* insert code here */ }

相反,没有定义的虚函数声明类似于:

virtual void fn();

此声明无法提供定义,导致“未定义”引用 typeinfo”错误。

类似地,它相当于声明一个外部变量而不定义it:

extern int i;
int *pi = &i;

在这种情况下,编译器指示“i”整数在其他地方声明,并且必须在链接期间解析。否则,pi 无法引用其地址。

以上是为什么我的 C 代码会产生'未定义的类型信息引用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn