Ключевое слово extern
используется для информирования компилятора о переменной, объявленной вне текущей области.Объявление, использующее extern
, не определяет переменную.Внешняя переменная имеет статическую длительность (она выделяется при запуске программы и освобождается при ее завершении) и имеет глобальную видимость.Таким образом, вам нужно определить переменную extern
, как вы делаете статическую переменную, в области блока компиляции (файл cpp, в идеале файл, где вы определили функцию main ()).Выполнение чего-то подобного решит вашу проблему:
#include "ilra.h"
ofstream logfile("test.log"); // declare and define the global variable.
int main ()
{
ilra i("hello", 1);
i.operator<< <int> (10);
return 0;
}