繁体   English   中英

不能使用与成员函数同名的辅助函数

[英]Can't use helper function with same name as member function

这段代码会编译(使用GCC / C ++ 11):

void doStuff_HELPER(int a) { /**/ }

class SomeClass{

public:
    void doStuff() {doStuff_HELPER( 10);}

};

这不是:

void doStuff(int a) { /**/ }

class SomeClass{

public:
    void doStuff() {doStuff( 10);}

};

它并没有说它是模棱两可的,也不能重载,或者它只是说了什么:“没有匹配的函数SomeClass :: doStuff(int)”,“候选:void SomeClass :: doStuff()”。 这是正确的行为吗? 标准对此有何说法?

(此外,此类辅助函数的最佳实践是什么?应该将它们放在单独的命名空间中吗?)

调用它明确指定范围::doStuff(10);

您应该使用范围解析运算符解决此问题。 使用::doStuff(10)代替doStuff(10)告诉编译器在全局名称空间中查找以解决名称冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM