应该是一个简单的问题,但我现在正在努力将一些辅助函数包装在命名空间中一个小时。
由于我需要不需要在类中的辅助函数,我建议将它们包装到命名空间中,而不是将它们全部设为静态。另见此处:http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
问题是,无论我做什么,都会遇到不同的错误。那么在不创建类的情况下使用自己的命名空间编写函数的正确方法是什么?让我们以下面的例子为例。我已经尝试过它的不同变体。
我的头文件:
#ifndef BINARYCONVERTER_HPP
#define BINARYCONVERTER_HPP
#include <iostream>
namespace binary_converter {
int myFunction(void);
}
#endif
还有我的源文件:
#include "binary_converter.hpp"
int myFunction(void) {
return true;
}
谢谢!
最佳答案
正如C++中所说的docs :
Symbols declared inside a namespace block are placed in a named scope that prevents them from being mistaken for identically-named symbols in other scopes.
记住这个功能
myFunction
来自您的头文件和功能 myFunction
来自您的源文件不属于同一命名空间。来自头文件的函数是 binary_converter
的一部分命名空间而源文件中的函数是全局命名空间的一部分。因此,您需要包装您的功能
int myFunction() {
return 0;
}
从源文件变成
binary_converter
命名空间是这样的:namespace binary_converter {
int myFunction() {
return 0;
}
}
或使用作用域运算符来注意
myFunction
属于binary_converter
命名空间是这样的:int binary_converter::myFunction() {
return 0;
}
关于c++ - 在 C++ 中实现没有类的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60193217/