如何拆分一个额外的大班?

时间:2016-02-16 21:43:34

标签: c++ visual-studio-2013

我有六个与IO相关的课程,所有这些课程都有很少的实用工具等,所有这些课程的重量都在1000左右。它们都必须在一个类中,因为根类被模板化以定义地址空间和使用模式,这使得在外部使用其成员非常方便。

然而,它变得很痛苦,因为它需要滚动和点击这么多,我必须记住一切都在哪里。 Afaik在c ++中没有部分类这样的东西,有没有其他方法来分割这个巨大的头文件?

2 个答案:

答案 0 :(得分:1)

如果由于模板和继承原因而将代码拆分没有意义,那么将代码物理分割是没有意义的。它应该都在同一个文件中。 IDE通常有很好的方法来处理gratuitis代码。对于VS2013,您可以使用折叠代码功能。如果你从这开始:

enter image description here

您可以折叠您不需要处理的内容并展开您想要查看的内容:

enter image description here

这将使代码编辑更容易。

通过以下方式执行此操作:

  1. 折叠您不想手动查看的内容并保留您想要的内容。这可以通过代码部分边缘的小+/-来完成。
  2. 使用查看 - >概述 - >缩小至定义以获取单个定义,然后使用+打开您正在处理的内容。
  3. 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"

预处理器会将所有文件粘合到一个大文件中进行编译,但您将不必自己这样做。