c++类实现命名空间

C++ class implementation namespace

本文关键字:命名空间 实现 c++      更新时间:2023-10-16

我有文件MyClass.hppMyClass.cpp

MyClass.hpp

class MyClass {
public:
    void method1();
    void method2();
};

MyClass.cpp

#include "MyClass.hpp"
void MyClass::method1() {
}
void MyClass::method2() {
}

我发现它有点傻,我必须写出MyClass::每次我必须写一个方法实现。是否存在某种语法糖可以让我将所有实现组合在一起?

也许像

namespace MyClass {
    void method1() {
    }
    void method2() {
    }
}

我不介意使用c++ 11的特性,但是我想坚持使用可移植的解决方案。

编辑:

我意识到上面写的代码是行不通的。我只是想用它来说明我想象中的一些语法糖是如何使事情变得更方便的。

不可能。

唯一的方法是直接在类定义中定义您的成员函数,这使它们成为inline,并且可能是或可能不是您想要的。

我个人认为,在文件中定义函数是值得的,必须在每个文件中输入一个类名。

不,没有别的办法。你必须重复MyClass::

不可能使用名称空间来标识方法。在一个命名空间中可以有几个类,非成员方法....由于类方法可以在任何源文件中定义(除了声明类本身的头文件),因此在定义方法时必须指定该方法属于哪个类。