为什么我无法在另一个文件中定义内联成员函数?

2024-01-02

我有三个文件:

1. Joy.h

class Joy
{
public:
    void test();
};

2.Joy.cpp

#include "Joy.h"
inline void Joy::test() {}

3.main.cpp

#include "Joy.h"    
int main()
{
    Joy r;        
    r.test();        
    return 0;
}

我尝试使用以下方法编译它们:

g++ cpp Joy.cpp

g++ say:

main.cpp:(.text+0x10): undefined reference to `Joy::test()'

谁能告诉我为什么...

如果我不想定义这个问题如何解决test().h 文件中的函数,但仍希望它是inline功能?


当定义内联成员函数时,应该在成员函数的定义前面加上关键字 inline,并将定义放入头文件中。

当您声明内联函数时,您基本上是在告诉编译器(如果可能)在调用该函数时用该函数的内容替换调用该函数的代码。这个想法是函数体可能很小,并且调用函数比函数体本身的开销更大。

为了能够做到这一点,编译器需要在编译调用函数的代码时查看定义,这本质上意味着定义必须驻留在标头中,因为调用函数的代码只能访问头文件。

好读:
[9.7] 如何告诉编译器将成员函数内联? http://www.parashift.com/c++-faq-lite/inline-functions.html#faq-9.7

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我无法在另一个文件中定义内联成员函数? 的相关文章

  • C++ 标准是否允许未初始化的 bool 导致程序崩溃?

    我知道一个 未定义的行为 C 几乎可以让编译器做任何它想做的事情 然而 我遇到了一次令我惊讶的崩溃 因为我认为代码足够安全 在这种情况下 真正的问题仅发生在使用特定编译器的特定平台上 并且仅在启用优化的情况下发生 我尝试了几种方法来重现问题
  • TCP客户端;网络流;异步读取; C#

    请原谅我对任务和异步缺乏了解 使用 TcpClient 类 我正在创建与可用服务器的连接 void async RunClientAsync TcpClient client new TcpClient try await client C
  • 委托和接口如何互换使用?

    我可以使用接口方法代替委托吗 如何 我发现搜索接口方法比使用委托更快 我希望有一个简单的代码片段 理论上 可以通过包含单个方法的接口 例如 Java 没有委托 来完成委托完成的所有工作 然而 它使代码变得更加冗长并且没有带来什么好处 话又说
  • 子进程中的变量修改

    我正在研究科比和奥哈拉伦的作品Computer Systems A Programmer s Perspective 练习 8 16 要求程序的输出如下 我更改了它 因为他们使用了一个你可以在他们的网站上下载的头文件 include
  • 用C#发送USSD?

    我想编写一个在 Windows Mobile 6 上运行的简单 C 应用程序 它可以发送 USSD 消息 有没有任何图书馆可以帮助我做到这一点 或者是否有任何示例解释如何使用线路发送USSD http msdn microsoft com
  • .NET Core 2 - 从启动中调用存储库方法[重复]

    这个问题在这里已经有答案了 我有以下存储库和类 public interface IValueService GetAll public class ValueService IValueService private DataContex
  • 如何获取 C# PriorityQueue 元素的优先级

    我正在初始化一个存储 XY 坐标的优先级队列 根据距原点的欧几里得距离确定优先级 我创建了一个自定义Comparer这使得它作为最大堆运行 PriorityQueue
  • 有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录?

    有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录 我们正在使用我们自己的抽象 我不希望在使用 Serilog 时来自 Hangfire 记录器的所有额外噪音 INIT call under web project na
  • C语言中的array、&array、&array[0]有什么区别? [复制]

    这个问题在这里已经有答案了 在学习C语言中的数组和指针时 我很困惑 为什么ch ch ch 0 彼此相等 而sptr sptr sptr 0 却不相等 这是我的源代码 int main void char ch 7 1 2 3 4 5 6
  • 谷歌基准迭代的意义是什么?

    我正在使用 Google Benchmark 来测量某些代码的执行时间 例如 我编写了以下代码来测量其执行时间性能 include
  • 阻止用户取消选择列表框中的项目?

    我有一个列表框 里面有很多项目 用户可以单击某个项目来编辑其内容 如何防止用户取消选择所有项目 即 用户不应该无法选择任何内容 您的情况缺少一个案例 即清除列表后 您将选择列表中不再存在的项目 我通过添加额外的检查来解决这个问题 var l
  • 将数字 n 拆分为 k 个不同数字的总和

    我有一个数字 n 我必须将它分成 k 个数字 使得所有 k 个数字都是不同的 k 个数字的总和等于 n 并且 k 最大 例如 如果 n 为 9 则答案应为 1 2 6 如果 n 为 15 则答案应为 1 2 3 4 5 这就是我尝试过的 v
  • 访问结构向量

    我有一个结构 struct OutputStore int myINT string mySTRING 如果我创建一个 OutputStore 类型的数组 如下所示 OutputStore OutputFileData new Output
  • 如何在 .NET 中自定义 JSON 枚举的反序列化?

    我有以下示例 C 代码 它是使用 svcutil exe 应用程序从 xsd 自动生成的 DataContract public enum Foo EnumMember Value bar Bar 1 EnumMember Value ba
  • 将数组显式衰减为指针

    最简洁 最惯用的方式是什么明确地将数组衰减为指针 例如 考虑您需要能够指导 SFINAE 或明确过载的情况 template
  • 使用可变参数模板函数计算多个值的平均值

    我正在尝试编写一个函数来确定任意数量参数的平均值 所有参数都具有相同的类型 出于学习目的 我尝试使用可变参数模板函数来做到这一点 这是我到目前为止所拥有的 template
  • 如何将此 Boost ASIO 示例应用到我的应用程序中

    我已经阅读了很多 ASIO 示例 但我仍然对如何在我的应用程序中使用它们感到困惑 基本上 我的服务器端需要接受超过100个连接 客户端 这部分是通过使用线程池 通常每个CPU核心2 4个线程 来完成的 为简单起见 我们假设只有一个连接 为了
  • 使用 System.Json 迭代 JSON

    我正在探索 NET 4 5 的功能System Json库 但没有太多文档 而且由于流行的 JSON NET 库 搜索起来相当棘手 我基本上想知道 我如何循环一些 JSON 例如 People Simon Age 25 Steve Age
  • 具有两个表的谓词构建器

    A Party可以有一个或多个Contact对象 我想选择全部Parties谁的街道名称包含特定关键字 如果我只想搜索Party我可以使用下面的代码 但我如何扩展它来搜索Contact public IQueryable
  • InvalidOperationException:没有为方案“CookieSettings”注册身份验证处理程序

    我正在使用 ASP Net MVC core 2 1 开发一个应用程序 其中不断出现以下异常 InvalidOperationException 没有为方案 CookieSettings 注册身份验证处理程序 注册的方案有 Identity

随机推荐

  • phpmyadmin 错误 13 权限被拒绝

    我正在使用 MYSQL 的 php 服务器和 phpmyadmin 我想用 Composer 安装一些软件包 但不知何故我更改了项目文件夹的权限 并且 phpmyadmin 的数据库消失了 我失去了一切 我正在尝试恢复它 3 小时 当我尝试
  • 如何使用 CryptoJs 转换为字符串并再次转换回来

    var encrypted CryptoJS AES encrypt jsonStr youngunicornsrunfree format JsonFormatter convert encrypted to a string for t
  • Firestore安全规则如何检查文档是否由用户(所有者)创建

    我有一个包含两个集合的 firestore 数据库 notes 其中每个文档存储每个注释的内容和authorId 对应于当前登录的用户 uid 以及 users 其中存储用户的名称每个文档的id就是用户的uid 这样 注释的作者就可以连接到
  • 如何使用 dotnet 在命令行中传递参数?

    命令dotnet myapp dll 4 3 2 抛出异常System FormatException Input string was not in a correct format 我不知道语法 我应该如何正确传递参数 我用的是powe
  • 如何将Less转换为Scss?

    我必须使用转换器 但它非常有限 http hallotheme com less2scss http hallotheme com less2scss 知道如何更好地从 LESS 转换为 SCSS 吗 less2sass 转换器非常好且易于
  • DriveApp 从 DocX 到 PDF 的转换失败

    我正在尝试转换 Google 云端硬盘上现有的 DOCX 文件 它会一直工作 直到创建新的 PDF 文件 然后我收到以下错误消息 从 application vnd openxmlformats officedocument wordpro
  • 在 Flutter 中声明样式文件

    我想知道在 Flutter 中实现带有我所有颜色信息和文本样式的样式文件的最佳方式是什么 浏览一些教程 有些教程似乎使用抽象类 而另一些教程则使用函数 导入的方式也不同 从性能 便利性 组织角度来看 做到这一点的最佳方法是什么 或者我应该完
  • 如何获得特定维度上张量的 MSE?

    我有 2 个张量 size of torch Size 2272 161 我想得到它们之间的均方误差 然而 我希望它沿着 161 个通道中的每一个通道 这样我的误差张量就有 size of torch Size 161 我怎样才能做到这一点
  • 如何在同一页面中拥有多个 jQuery 颜色框

    我有一个页面需要从多个位置打开颜色框 一种是在文档就绪函数中如下 a rel q1 colorbox opacity 0 8 width 800px height 75 另一个需要从谷歌图表中打开一个完全不相关的颜色框 并在 onclick
  • 64 位除以 32 位

    我正在寻找一种快速的方法来执行以下除法 被除数是一个有符号的 64 位整数 除数是一个有符号的 32 位整数 商应该是有符号的 64 位整数 不需要余数 低位 dword 的除数为零 我只使用 32 位数据类型 因为编译器对 64 位数据类
  • 我可以在多处理池星图方法中传递队列对象吗[重复]

    这个问题在这里已经有答案了 关于在 python 多处理池的 starmap 方法中传递多个参数 SO 中有很多问题 但我想问的是 我是否可以在方法中发送一个可以在不同进程之间共享的队列对象 我可以使用线程和多处理 Process 方法来完
  • pyparsing 可能包含或不包含值的字段

    我有一个类似于以下内容的数据集 Capture MICR Serial Pos44 Trrt 32904 Acct Tc 2064 Opt4 Split 我遇到的问题是我不知道如何正确编写 捕获 MICR 串行字段 的捕获 该字段可以为空
  • 指令模板函数的角度访问范围

    我有一个具有模板功能的指令 restrict E A is the default so you could remove this line scope field field template function element attr
  • 是否可以设置 TextBoxFor 生成的输入类型

    我在表单中使用 ASP NET MVC 3 TextBoxFor 并希望使用 type email 以便至少在某些移动设备上更轻松地输入 但找不到如何使用 TextBoxFor 设置它 这不是很容易就能实现的吗 In View Html L
  • 如何在 flutter 中使用 getx 使列表可观察

    我正在观看有关使用 Getx 和 API 的教程 设置用于获取数据的控制器后 我们声明了一个列表变量并使其可观察 obs 但列表格式已被弃用 你能帮我吗我现在该怎么做 var products List
  • 无法使用 IIS 7 加载图像

    我正在构建一个新的 Web 服务器 并且正在重新部署一个在 IIS6 中正常工作的 ASP Net 站点 不幸的是 没有任何图像正在加载 我收到了 404 错误 图像位于正确的文件夹中 我什至可以导航到网站中的正常页面 有什么建议么 可能是
  • Seabornpairplot 色调参数未按预期工作

    如果将 C 指定为 hue 参数的值 则预计 Seaborn 不会显示 C 列 我错了吗 sns pairplot df hue C 数据框 默认情况下 seaborn 将显示所有数字列 因此 如果您的 色调 列 在您的情况下为 C 列为字
  • 为 highchart 中的两个系列之一设置 minPointLength

    我的高图中有两个数据系列 并且只想对其中一个使用 minPointLength 这个可以设置吗 我的系列仅包含 名称 颜色和数据 我的图表配置如下所示 const chartConfig chart type column dashStyl
  • 如何安装源自 apt 包的 Python 绑定?

    我有一个网站托管在Heroku http heroku com 我现在想使用python qrtools包使用了ZBar条码扫描器 http zbar sourceforge net 在常规的 debian 基于 上 我可以做一个简单的操作
  • 为什么我无法在另一个文件中定义内联成员函数?

    我有三个文件 1 Joy h class Joy public void test 2 Joy cpp include Joy h inline void Joy test 3 main cpp include Joy h int main