理解“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中文网其他相关文章!