我有六个与 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/