繁体   English   中英

调用同名函数

[英]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.

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