首页 > 后端开发 > C++ > 为什么 g 会产生'对 typeinfo 的未定义引用”错误?

为什么 g 会产生'对 typeinfo 的未定义引用”错误?

Susan Sarandon
发布: 2024-12-03 06:18:10
原创
317 人浏览过

Why Does g   Produce

G : 了解“未定义的 Typeinfo 引用”错误

编译 C 程序时经常遇到“未定义的 TypeInfo 引用”错误克。它表示链接器无法找到特定类的类型信息,这可能有多种原因。

原因:声明没有定义的虚拟函数

一个常见原因此错误是在声明虚拟函数时未在同一编译单元中提供其定义。当你声明一个虚函数而不定义它时,你就表明它的定义存在于其他地方,要么在后续的编译单元中,要么在外部库中。

因此,在链接阶段,编译器会在其他地方搜索该虚函数的定义。目标文件或库。如果找不到定义,则会引发“对 typeinfo 的未定义引用”错误。

示例:不正确的声明

virtual void fn();
登录后复制

此声明通知编译器名为 fn() 的虚函数存在,但它没有提供具体的

示例:正确的定义

virtual void fn() { /* Implementation code here */ }
登录后复制

当您向虚函数提供定义时,链接器不再需要在其他地方搜索它,从而解决了错误。

类比:外部变量解决方案

该行为类似于在一个编译单元中声明外部变量并尝试在另一个单元中访问它而不提供显式定义:

extern int i;
int *pi = &i;
登录后复制

这里,变量i 是外部声明的,表明它的定义位于另一个编译单元中。如果此定义在链接时不可用,编译器将生成“未定义引用”错误。

了解此错误的根本原因对于避免该错误并确保成功编译 C 代码至关重要。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板