Я пытаюсь объявить статическую переменную в console.h и определить ее в console.cpp. строка, вызывающая переменную:
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â
Я не знаю, почему это делается или даже где это можно понять. Также немного странно, что компилятор сказал бы это, не так ли?
Только объявление переменной-члена должно включать в себя static
спецификатор.
struct Foo
{
static int value_;
};
// static specifier cannot be used here.
int Foo::value_ = 1;
В этом случае, если _tabsize
не изменяется, вы можете объявить его как const
и присвоить ему значение в определении класса. Если вы этого не сделаете, нет необходимости предоставлять определение.
struct Foo
{
static const int value_ = 1;
};