C++ 如何访问与全局函数具有相同函数签名的类中的全局函数?
以下是我的设想: file.h此文件包含两个带外部的函数C++ 如何访问与全局函数具有相同函数签名的类中的全局函数?,c++,visual-c++,C++,Visual C++,以下是我的设想: file.h此文件包含两个带外部的函数 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这是一个类测试,其中两个成员函数的签名与file.h中的extern add和sub相同 class tes
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这是一个类测试,其中两个成员函数的签名与file.h中的extern add和sub相同
class test
{
public:
test();
~test();
private:
int add(int a, int b);
int sub(int a, int b);
}
#include "file.h"
namespace file
{
int add(int a, int b)
{
return 20;
}
int sub(int a, int b)
{
return 20;
}
}
test.cpp调用测试类构造函数add函数中测试类的实现,并包含这两个文件
#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;
}
现在我的问题是在主课上,要打印什么。是否会打印
它将输出作为
加:10
它为什么给出
10
?Isclass test
使用自己的函数add()
和sub()
。因为这两个函数都存在于文件.h
和同一个类中。我猜它会给函数带来模糊性。是否有任何标准?如果有,请解释。和如何使用文件中的函数。在类测试中调用添加类将使用添加成员函数
要调用全局add
函数,请使用:
use也可以使用名称空间来完成。
在file.h中
class test
{
public:
test();
~test();
private:
int add(int a, int b);
int sub(int a, int b);
}
#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;
}
#包括“test.h”
#包括“file.h”
#包括
test::test()
{
int addition=file::add(10,10);//此处使用了名称空间
printf(“添加:%d”,添加);
}
int
测试::添加(int a,int b)
{
返回10;
}
int
测试::sub(内部a、内部b)
{
返回10;
}
显然是编译错误,因为您试图在此处将指针类型分配给非指针类型:test a=new test()代码>不会打印任何内容。即使它已编译,您也不会执行任何打印任何内容的操作。只要更正,编译并执行它。编译程序并运行它很可能会提供答案。你为什么问编译器会做什么,而不是自己编译呢?如果你手头没有,就有。运行它并找出答案。谢谢!你能给我发一个链接吗?我可以从那里得到这方面的文档。@D'JayPatil抓起一个并阅读它。这种行为在C++标准中描述,但大多数凡人都不想读。@ D'JayPall找不到官方文档,而是给我的答案添加了一个SO问题的链接。右乌代