c++:有什么方法可以避免在每个成员函数之前键入 class 名称?

c++: Any way to avoid typing the class name before every member function?

我 5 年前在 java 开始编程,所以当我 2 年前转向 c++ 时,成员函数的实现相当令人恼火。

Foo::bar(){/*some stuff*/}
Foo::baz(){/*some other stuff*/}

那时候我只是有点习惯了,但最近我想知道是否有任何方法可以构造代码以避免键入 Foo:: 每个函数,也许是这样的:

Foo::{
    bar(){//some stuff}
    baz(){//some other stuff}
}

我发现即使在 2 年后我仍然无法阅读自己的代码,因为函数本身的名称不是行中的第一件事。

编辑:由于这个问题是重复的,我想我会分享一件我在点击链接时发现的事情。目前这绝对不可能,但有一个 proposal 可以将其添加到标准中。不知道它是否或何时会真正被添加,但如果你在几年后阅读这篇文章,这可能是一个很好的线索。

不,没有(除非你在其声明的上下文中定义一个成员函数,因此当你定义你的 class - 这或多或少是在 Java 中实际发生的事情)。

换句话说,如果您不想这样做:

// .h
struct S { void f(); };
// .cpp
void S::f() {}

您仍然可以这样做:

// .h
struct S { void f() {} };

无论如何它都有缺点,你无法准备好在任何情况下应对它们。