我有一个项目需要"使用未命名的命名空间创建一个常量变量",我需要与另一个.cpp文件中的函数共享它。它说变量声明可以在他们自己的文件中。使用了extern关键字,我想出了如何使用extern,在头文件中使用var并声明like extern const char varname;
,在main.cpp中为其赋值,(const char varname = A;
全局在上面主要功能)并能够在其他.cpp文件中使用它。但我不确定如何使用未命名的命名空间。在示例文件中,他们在主文件中包含以下内容:
namespace
{
extern const double time = 2.0;
}
但现在有一个如何在另一个.cpp文件中访问它的示例。我尝试用我的变量做这个,我在另一个文件中得到一个错误,我试图用它说它没有在那个范围内声明。
有人可以提供一些见解,说明我应该在这里做些什么来利用这两件事吗?
答案 0 :(得分:1)
您可以通过对变量的其他引用来访问它。
例如:
namespace
{
const double time = 2.0;
const double & local_ref_time(time); //Create a local referece to be used in this module
}
extern const double & global_ref_time(local_ref_time); //Create the global reference to be use from any other modules
答案 1 :(得分:1)
您可以尝试编写这样的访问器函数:
<强>的main.cpp 强>
#include "other.hpp"
namespace
{
const double time = 2.0;
}
int main()
{
tellTime();
return 0;
}
const double getTime()
{
return time;
}
<强> other.hpp 强>
#ifndef OTHER_HPP_INCLUDED
#define OTHER_HPP_INCLUDED
const double getTime();
void tellTime();
#endif // OTHER_HPP_INCLUDED
<强> other.cpp 强>
#include <iostream>
#include "other.hpp"
void tellTime()
{
std::cout << "Time from the anonymous namespace of main.cpp is " << getTime() << std::endl;
}
我认为任何数量的外部都不会有所帮助:https://stackoverflow.com/a/35290352/1356754