【发布时间】:2021-04-26 09:34:43
【问题描述】:
我的目标是在命名空间中从function.cpp 声明一个现有函数,这样我就可以避免名称重复。我不想在命名空间内定义函数,而是在单独的文件(在本例中为 function.cpp)。我创建了以下示例来代表我在此案例中的努力。
我是 C++ 新手,我可能在定义中做错了什么,不幸的是我似乎没有找到问题所在。任何帮助将不胜感激。
//Header.h
int adder(int a, int b);
//Function.cpp
#include "Header.h"
int adder(int a, int b) {
return (a + b);
}
//Namespace.h
#include "Header.h"
namespace orange {
int adder(int a, int b);
}
//Main.cpp
#include <iostream>
#include "Namespace.h"
using namespace orange;
int main() {
std::cout << orange::adder(7, 5) << "\n";
}
【问题讨论】:
-
您不能将定义(或声明)“移动”到命名空间。函数(和变量)必须在命名空间内声明和定义才能开始。
-
澄清一下,您想在命名空间中声明一个现有函数吗?
-
@user1810087 是的,这正是我想要实现的目标。
-
“我不想在命名空间内声明函数”顺便说一句,你已经用 ` namespace orange { int adder(int a, int b); } `
-
好吧,这是非常不推荐的,因此我不会回答你的问题,但是可以使用一些 hacky 包含技巧将函数“移动”到命名空间中. 注意:如果你使用这种技术,你会遇到问题! 这个想法是将
include的东西放到命名空间中,不要使用原始的标头和实现。不能不使用这个,但看看this example....
标签: c++ namespaces