是否有可能在实现文件中使用名称空间或等价物来避免必须在每个函数前加上类名

Is it possible to use a namespace or equivalent in an implementation file to avoid having to prefix every function with the class name?

本文关键字:函数 等价物 文件 实现 有可能 是否 空间      更新时间:2023-10-16

如果我有一个class:

class Foo{
public:
void someFunc():
}

然后在实现中我需要做:

void Foo::someFunc(){
//My implementation.
}

有一些方法我可以避免前缀每个功能与Foo::,通过使用名称空间或什么?(只是为了节省打字的时间。没有其他原因)。

编辑:我不明白为什么这个被否决了。如果c++有一个特性来组织代码,这样我们就不用输入那么多了,这其实是值得知道的——类似于使用" using "关键字,这样我们就不用在命名空间中重复添加前缀了… 输入更少通常更容易维护(需要维护的代码更少)——这就是为什么我们将代码组织成允许我们共享和重用代码的结构。正确性不一定与输入有关——但是你花在输入上的时间越少,你就有越多的时间专注于你的想法或产品,以及你的代码是否"正确"。每次引用对象时为名称空间或类名添加前缀并不会使代码更加正确,而只会耗费时间,没有理由浪费时间做不必要的事情。这就是我们为名称空间使用"using"关键字的原因,这样我们就不必每次都输入名称空间(我在前面提到过)。因此,就像我们对名称空间有一个"using"关键字一样,我在问是否有一种方法可以为类做到这一点。

仅当您将实现直接放在头文件中时。

可能不是应该使用的东西,但仍然是一个解决方案:

#define a Foo::
void a someFunc() ...

遗憾的是,您不能使用类,但可以使用名称空间:

test.h:

namespace Test {
    void someFunc();
};

test.cpp:

namespace Test {
    void someFunc() {
        std::cout << "someFunc called" << std::endl;
    }
};