当我在头文件中定义一个类时,我必须为每个方法编写完整的路径。我仍然想将它定义为一个类。例如:
a.h:
class a {
void main();
}
a.cpp:
#include "a.h"
class a {
void main() {
// define it
}
}
这段代码会出错,但实际上可以做类似的事情吗?
我的意思是为每个方法定义代码,我必须编写“a::main() {}”,这对我来说可读性不太好。我问是否仍然可以按照 header 中的方式定义它。
类的特点是,它们通常代表对象。在此示例中,函数
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
中,如上所述。