我有六个与IO相关的课程,所有这些课程都有很少的实用工具等,所有这些课程的重量都在1000左右。它们都必须在一个类中,因为根类被模板化以定义地址空间和使用模式,这使得在外部使用其成员非常方便。
然而,它变得很痛苦,因为它需要滚动和点击这么多,我必须记住一切都在哪里。 Afaik在c ++中没有部分类这样的东西,有没有其他方法来分割这个巨大的头文件?答案 0 :(得分:1)
如果由于模板和继承原因而将代码拆分没有意义,那么将代码物理分割是没有意义的。它应该都在同一个文件中。 IDE通常有很好的方法来处理gratuitis代码。对于VS2013,您可以使用折叠代码功能。如果你从这开始:
您可以折叠您不需要处理的内容并展开您想要查看的内容:
这将使代码编辑更容易。
通过以下方式执行此操作:
View-> Outlining 菜单中还有其他有用的代码简化工具。
答案 1 :(得分:0)
您可以在头文件中声明该类,然后将每个定义分隔到其自己的cpp文件中。然后你有一个主cpp文件,其中包含所有这些sub-cpp文件。编译时,你只需要引用" master" file作为输入文件。
许多模板化的类都是以这种方式创建的。它们使用.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"
预处理器会将所有文件粘合到一个大文件中进行编译,但您将不必自己这样做。