将C ++方法声明从.hh移动到.cc文件

时间:2009-09-02 20:34:46

标签: c++ parsing header include

我正在开发一个C ++项目,其中有很多类具有类,方法并且包含所有类在一个文件中。这是一个很大的问题,因为方法实现经常需要#include语句,而任何想要使用类的文件都会传递这些#includes。我只是觉得有一个工具在C ++头文件上执行以下操作会很好:

  1. 将C ++头文件解析为两部分:一个声明一个类的头文件,它的数据和该类的方法以及一个实现这些方法的单独文件。
  2. 从头文件中删除不必要的包含。
  3. 将必要的包含添加到实现文件中。
  4. 我理解解析C ++非常困难,但即使是不完美的工作也会比我现在正在做的重复文本编辑有所改进。有什么能做这样的事吗?或者我是否坚持使用我自己的解决方案或使用我的文本编辑器来解决这个问题之间的决定?

2 个答案:

答案 0 :(得分:2)

您是否在寻找Lazy C++之类的内容?

  

Lzz是一种可以自动化许多工具的工具   繁琐的C ++编程任务。它可以   为您节省大量时间并进行编码   更愉快。鉴于一系列   声明Lzz会生成你的   标题和源文件。

来自同一地方的例子:

    // A.lzz
    class A
    {
    public:
      inline void f (int i) { ... }
      void g (int j = 0) { ... }
    };
    bool operator == (A const & a1, A const & a2) { ... }

Lzz will generate a header file:

    // A.h
    #ifndef LZZ_A_h
    #define LZZ_A_h
    class A
    {
    public:
      void f (int i);
      void g (int j = 0);
    };
    inline void A::f (int i) { ... }
    bool operator == (A const & a1, A const & a2);
    #endif

And a source file:

    // A.cpp
    #include "A.h"
    void A::g (int j) { ... }
    bool operator == (A const & a1, A const & a2) { ... }

答案 1 :(得分:1)

第1步应该很容易做到,尽管我没有任何建议。 2和3要困难得多。看一下这个question