是否可以在实现文件中使用命名空间或等效命令,以避免必须为每个函数添加类名前缀?

时间:2016-09-12 03:57:53

标签: c++ c++11

如果我有课:

class Foo{

public:

void someFunc():

}

然后在实施中我需要做:

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

是否有某种方法可以避免使用Foo::为每个函数添加前缀,使用命名空间或其他东西? (只是为了节省打字......没有其他原因)。

编辑:我不明白为什么这会被投票。如果有一个C ++特性来构造代码,所以我们不必输入那么多,它实际上值得知道 - 类似于使用“Using”关键字,所以我们不必重复命名空间...

编辑:@PeteBecker打字较少通常更易于维护(维护的代码较少) - 这就是我们将代码组织成允许我们共享和重用代码的构造的原因。正确性不一定与打字有关 - 但是你打字的时间越少,你花在专注于想法或产品上的时间就越多,以及你的代码是否“正确”。每次引用对象时前缀命名空间或类名,都不会使您的代码更正或更不正确,而只是花费时间,并且没有理由浪费时间做一些不必要的事情。这就是我们为命名空间设置“using”关键字的原因,因此我们不必每次都输入命名空间(我之前提到过)。就像我们对命名空间有一个“using”关键字一样,我问是否有办法为类做这个。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

遗憾的是,您无法使用类,但使用命名空间可以:

test.h:

namespace Test {
    void someFunc();
};

TEST.CPP:

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