Я пытаюсь объявить статическую переменную в console.h и определить ее в console.cpp. линия вызова переменной является:Статическая декларация C++
ok = CheckIoEditMinMax(0,Console::_tabsize, curpos, 0, insert,
20-Console::_tabsize,20, offset) && ok;
Я знаю, смог передать его, но компилятор не любит так, как я делаю это. Например, я объявил это так:
/*Edited*/
namespace cio{
class Console{
public:
static unsigned int _tabsize; //Under public so it can be reached by the main.
//inside the console class in cio namespace
};
}
А затем определены в файле CPP, как это:
/*Edited - Also No it is not Const */
namespace cio{
unsigned int Console::_tabsize = 4;
}
Но компилятор до сих пор не нравится это, и говорит это:
console.cpp:8:32: error: âunsigned int cio::Console::_tabsizeâ is not a
static member of âclass cio::Consoleâ
Я не знаю, почему это делается или даже где это выяснить. Также немного странно, что компилятор сказал бы это, не так ли?
Поместите немного больше контекста вокруг кода. Класс, пространство имен и т. Д. – Rod
Ну, компилятор ясно говорит, что '_tabesize' не является членом, может быть, есть причина для этого? –
попытайтесь удалить «статический» в cpp, просто «unsigned int Console :: _ tabsize = 4;». Кроме того, убедитесь, что tabsize является полем класса Console (предположим, что Console является классом, если это пространство имен, попробуйте «пространство имен Console {unsigned int Console :: _ tabsize = 4;}» внутри cpp –