[英]calling same name function
是否可以从Foo.cpp调用foo()函数而不将函数名Foo :: foo()更改为Foo :: newfoo()。
main.cpp中
#include <iostream>
#include "Foo.hpp"
class Foo {
public:
void foo() {
std::cout << "Foo::foo\n";
}
void bar() {
std::cout << "Foo::bar\n";
foo();// need to call foo() function from foo.cpp not Foo::foo()
}
};
int main () {
Foo f;
f.bar();
return 0;
}
Foo.hpp
#ifndef FOO_HPP_INCLUDED
#define FOO_HPP_INCLUDED
void foo();
#endif // FOO_HPP_INCLUDED
Foo.cpp中
#include "Foo.hpp"
#include <iostream>
void foo(){
std::cout << "foo\n";
}
ps.sorry为我可怜的英语。
使用自由函数的完全限定名称。
::foo();
函数名前面的::
告诉编译器通过全局范围内的名称foo()
调用该函数。
如果自由函数foo()
是在一些其他的命名空间,您需要使用完全合格的名称指定命名空间。
namespacename::foo();
如果在某些命名空间xyz
定义了自由函数foo
,那么执行以下操作:
xyz::foo(); //if foo is defined in xyz namespace
或者只是这样做:
::foo(); //if foo is defined in the global namespace
这假设foo
是在全局命名空间中定义的。
最好为您的实现使用命名空间。 避免污染全局命名空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.