如何将类分离到.h和.cpp而不需要重写整个路径

问题描述 投票:0回答:1

当我在头文件中定义一个类时,我必须为每个方法编写完整的路径。我仍然想将它定义为一个类。例如:

a.h:

class a {
  void main();
}

a.cpp:

#include "a.h"
class a {
  void main() {
    // define it
  }
}

这段代码会出错,但实际上可以做类似的事情吗?

我的意思是为每个方法定义代码,我必须编写“a::main() {}”,这对我来说可读性不太好。我问是否仍然可以按照 header 中的方式定义它。

c++ oop
1个回答
0
投票

类的特点是,它们通常代表对象。在此示例中,函数

main
是独立的 - 它不适用于任何对象。如果是这样,那么容纳它的正确“容器”是命名空间而不是类。

// a.h
namespace a {
  // declare it
  void main();
}

// a.cpp
#include "a.h"
namespace a {
  // define it
  void main() {
    ...
  }
}

命名空间的语法类似于类的语法,但它有两种形式:

a::main
或只是
main
。请参阅下面的示例。

// other_file.cpp
#include "a.h"

...
// use it
a::main();
// yet_another_file.cpp
#include "a.h"
using namespace a;

...
// use it in another way
main();

您可以使用类的

static
方法来执行相同的操作(实际上,对于非常古老的 C++ 版本,您就是这样做的)。

#include "a.h"
class a {
  static void main() {
    // define it
  }
}

如果你的类确实代表对象,这就是要走的路;你的类将有几个常规方法,并且只有一个或几个

static
方法。但是,如果您的
main
函数与
a
类型的对象(或者可能与任何对象根本无关)无关,只需创建一个独立的函数即可。或者将其放入
namespace
中,如上所述。

© www.soinside.com 2019 - 2024. All rights reserved.