gpt4 book ai didi

c++ - 如何拆分一个超大类?

转载 作者:行者123 更新时间:2023-11-30 03:44:27 24 4
gpt4 key购买 nike

我有六个与 IO 相关的类,所有类都有它们的小实用程序类等,总计约 1000 行。它们都必须一起在一个类中,因为根类被模板化以定义地址空间和使用模式,这使得在外部使用其成员非常方便。

尽管如此,处理它变得很痛苦,因为它需要大量滚动和点击,而且我必须记住所有内容的位置。 Afaik 在 C++ 中没有分部类这样的东西,有没有其他方法可以拆分这个巨大的头文件?

最佳答案

您可以在头文件中声明该类,然后将每个定义分离到它自己的 cpp 文件中。然后你有一个包含所有这些子 cpp 文件的主 cpp 文件。编译时,您只需引用“master”文件作为输入文件。

许多模板类都是通过这种方式创建的。他们使用 .tcc 扩展名来标记某些函数的实现,因此它不在头文件本身中。 C++ 不关心功能的实现位置,只要在编译和链接时可以找到即可。因此,虽然 C++ 本身没有 partial classes,但 partial class 的功能仍然隐式可用。

例如,

//BigClass.h
#pragma once
class BigClass
{
// Lots of methods
public:
void doMethodA();
void doMethodB();
// ...
};

然后,有很多子文件,每个文件实现一个方法。

//BigClass_doMethodA.cc
void BigClass::doMethodA()
{
// Method body
}

在另一个文件中你做同样的事情。

//BigClass_doMethodB.cc
void BigClass::doMethodB()
{
// Method body
}

然后,您就有了一个“主”cpp 文件。

//BigClass.cpp
#include "BigClass.h"
#include "BigClass_doMethodA.cc"
#include "BigClass_doMethodB.cc"

预处理器会将所有文件粘合到一个大文件中进行编译,但您将受益于不必自己执行此操作。

关于c++ - 如何拆分一个超大类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35443592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com