调用同名函数

Pou*_*dXI 7 c++ class function include duplicates

是否可以从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;
}
Run Code Online (Sandbox Code Playgroud)

Foo.hpp

#ifndef FOO_HPP_INCLUDED
#define FOO_HPP_INCLUDED

void foo();

#endif // FOO_HPP_INCLUDED
Run Code Online (Sandbox Code Playgroud)

Foo.cpp中

#include "Foo.hpp"
#include <iostream>
void foo(){
    std::cout << "foo\n";
}
Run Code Online (Sandbox Code Playgroud)

ps.sorry为我可怜的英语.

Alo*_*ave 14

使用自由函数的完全限定名称.

::foo();
Run Code Online (Sandbox Code Playgroud)

::函数名的前面,告诉编译器通过名称来调用该函数foo()是在全球范围内.
如果自由功能foo() 在一些其他的命名空间,您需要使用完全合格的名称指定命名空间.

namespacename::foo();
Run Code Online (Sandbox Code Playgroud)