【发布时间】:2017-02-07 02:15:59
【问题描述】:
我正在尝试在我的项目的其他地方使用在 TaxConstants.hpp 命名空间 TAXCONSTANTS 中声明的常量 int SIZE。当我尝试编译时,我在所有引用 SIZE 的地方都得到“未定义的对 'SIZE' 的引用。
文件 TaxConstants.hpp
#ifndef TaxConstants_hpp
#define TaxConstants_hpp
namespace TAXCONSTANTS
{
extern const int SIZE = 4; // I have tried with and without extern
}
#endif //TAXCONSTANTS_HPP
main.cpp
#include <iostream>
#include "TaxConstants.hpp"
using namespace std;
using namespace TAXCONSTANTS;
int main()
{
extern const int SIZE;
// This is a struct defined in another file. It is a sample of my use for SIZE. I left out the #include above to simplify things.
taxPayer payers[SIZE];
//More code
return 0;
}
附加信息:这是一个学校项目,我的老师要求在命名空间 TAXCONSTANTS 中的文件 TaxConstants.hpp 中声明常量。
总共有 5 个文件,包含我的函数的文件对 SIZE 错误具有相同的未定义引用。
我花了几个小时查找有关 extern 函数和命名空间的类似解释,但大多数建议首先反对这样做,而是提供另一种解决方案。我很遗憾不能使用它们。人们遇到的其他错误是得到了我没有的“多重装饰”。
编辑
请参阅下面的 Brians 解释以获得更详细的信息。
我需要做的是定义
const int SIZE = 4;
在命名空间 TAXCONSTANTS 的 TaxConstants.hpp 文件中。
然后删除 '外部常量 int SIZE;' 从我的主文件中引用 SIZE by TAXCONSTANTS::SIZE 在我想使用大小的任何地方。
这是我完全忘记的基本命名空间。
【问题讨论】:
-
我不相信这与命名空间有关,而是
extern const的问题。 -
您可以使用搜索词stackoverflow c++ extern const查看其他帖子
-
谢谢大家。在回到这里之前,我终于弄清楚了。正如 Brian 和 AnT 都在下面陈述的那样,我做错了。他们的解释比我写的要好。我将在问题中添加我的解决方案。
标签: c++ namespaces constants extern