如何访问 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;
}
以下是我的场景:
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
.
在 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;
}