Я пытаюсь использовать константу int SIZE, которая объявлена в пространстве имен TaxConstants.hpp TAXCONSTANTS в других местах моего проекта. Когда я пытаюсь скомпилировать, я получаю «неопределенная ссылка на 'SIZE' везде ссылается что SIZEC++ Ссылка на extern const в пространстве имен
файловой 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.hpp в пространстве имен TAXCONSTANTS.
Всего 5 файлов, файл с моим fu nctions имеет ту же неопределенную ссылку на ошибку SIZE.
Я потратил часы на поиск похожих объяснений на функцию extern и пространства имен, но большинство предложений против этого в первую очередь предлагают другое решение. Я, к сожалению, не могу их использовать. Другие ошибки, которые люди испытывали, получали «несколько украшений», которых у меня нет.
EDIT
См Brians объяснение ниже для более подробно.
Что мне нужно сделать, это определить
const int SIZE = 4;
в файле TaxConstants.hpp в пространстве имен TAXCONSTANTS.
Затем удалить 'extern const int SIZE;' из моего основного файла и вместо этого ссылка SIZE by TAXCONSTANTS :: РАЗМЕР везде, где я хотел использовать размер.
Это основное пространство имен, о котором я совсем забыл.
Возможный дубликат: [Почему «extern const int n» не работает должным образом?] (Http://stackoverflow.com/questions/14894698/why-does-extern-const-int-n-not-work -а-ожидаемый) –
Я не считаю, что это имеет какое-то отношение к пространствам имен, но проблема 'extern const'. –
Вы можете видеть другие сообщения, используя поисковые термины [stackoverflow C++ extern const] (https://www.google.com/search?q=stackoverflow+c%2B%2B+extern+const&ie=utf-8&oe=utf-8) –