如何访问 class 中与全局函数具有相同函数签名的全局函数?

How access global function in class which is having same function signature as global function?

以下是我的场景:

file.h 这个文件包含两个带有 extern

的函数
extern int add(int a, int b);
extern int sub(int a, int b);

file.cpp以上功能的实现

int add(int a, int b)
{
    return 20;
}

int sun(int a, int b)
{
    return 20;
}

test.h 这是 class 测试,其中两个成员函数与 extern add 和 sub in file.h[=23 具有相同的签名=]

class test
{
    public:
          test();
          ~test();
    private:
         int add(int a, int b);
         int sub(int a, int b);
}

test.cpp 在测试 class 中执行测试 class 调用构造函数添加函数,同时包含两个文件。

#include "test.h"
#include "file.h" // Contains extern methods
#include <iostream>

test::test()
{
     int addition = add(10, 10);
     printf("Addition: %d ", addition );
}

int 
test::add(int a, int b)
{
    return 10;
}

int 
test::sub(int a, int b)
{
    return 10;
}

main.cpp

 #include "test.h"
 int main()
 {
   test *a = new test();
 }

现在我的问题主要是 class 将打印什么。是否打印

它给出的输出为 加法:10 为什么它给出 10 ?是 class test 使用自己的函数 add()sub()。因为这两个函数都存在于 file.h 和相同的 class 中。我的猜测是它将为函数提供 ambiguity。是否有任何标准,如果有请解释。 如何在 class test.

中使用 file.h 中的函数

test class 中调用 add 将使用 add 成员函数。

要调用全局 add 函数,请使用 global scope resolution operator :::

int addition = ::add(10, 10);

use 也可以使用命名空间来完成。 在 file.h

#include "file.h"
namespace file
{
     int add(int a, int b)
     {
         return 20;
     }

     int sub(int a, int b)
     {
         return 20;
     }
}

在test.cpp

#include "test.h"
#include "file.h" 
#include <iostream>

test::test()
{
     int addition = file::add(10, 10); // used namespace here
     printf("Addition: %d ", addition );
}

int 
test::add(int a, int b)
{
    return 10;
}

int 
test::sub(int a, int b)
{
    return 10;
}