C ++类实现命名空间

时间:2014-05-02 08:15:02

标签: c++ c++11 namespaces

我有文件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功能,但我想坚持使用便携式解决方案。

编辑:

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

3 个答案:

答案 0 :(得分:1)

不,这是不可能的。

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

就我个人而言,我认为 source 文件中的函数定义非常值得在每个文件中输入一次类名。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

无法识别使用命名空间的方法。在命名空间中可以有几个类,非成员方法....由于可以在任何源文件中定义类方法(除了声明类本身的标题之外),您必须指定方法属于哪个类定义它。