c++ - 在 C++ 中将类定义拆分为多个模块单元
问题描述
有没有办法将类定义(实现)拆分为多个模块单元?如果一个或多个类的方法大到足以放置在单独的源文件中,这会很有帮助。我看到的最好的解决方案可能是模块接口文件中的类声明和单独的模块实现文件中的方法定义之一。但它不起作用,因为编译器没有看到类声明编译模块实现文件:
//module interface unit
export module test;
export class foo
{
void f();
};
//module implementation unit
module test;
void foo::f() {} // compiler doesn't know about foo class and its methods
解决方案
我想你是在问模块分区。通过使每个单独的模块可以将单个模块拆分为多个源文件,但是这些子模块被识别为这样并自动重新组合成单个命名模块。
分区的语法是冒号和子名。
module foo:part1;
您可以在此处阅读更多相关信息:https ://vector-of-bool.github.io/2019/03/10/modules-1.html
就像使用 C++ 头文件一样,不需要将模块拆分和细分为多个文件。然而,大型源文件可能变得难以处理,因此 C++ 模块还可以将单个模块细分为不同的翻译单元,这些翻译单元合并在一起形成整个模块。这些细分称为分区。
推荐阅读
- bash - 如何根据 bash shell 脚本中输入的年份和月份(不是当前月份)获取过去 6 个月的年份和月份?
- javascript - 链接 onclick 不提交表单
- cisco - 我需要从 cisco 设备中获取一些信息。它是 cisco-ios-xe 设备
- java - Java 格式时间戳
- javascript - Nuxt Js - 在初始页面加载期间仅加载一次脚本
- python - 未定义 wsgi 应用程序名称“BASE_DIR”
- scripting - 使用相同图像构建多个服务器 - 一个不会运行特定的 crontab 行
- python - 使用 Python 获取字符串、拆分然后加入
- dart - Dart 从不可编辑的大文件中读取 json 对象
- google-cloud-platform - 将 zip 上传到 GCP jupyterlab 超级慢