C ++ Статическая Декларация

0

Я пытаюсь объявить статическую переменную в 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â

Я не знаю, почему это делается или даже где это можно понять. Также немного странно, что компилятор сказал бы это, не так ли?

Теги:
class
namespaces
static
member

1 ответ

2

Только объявление переменной-члена должно включать в себя 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;
};
  • 0
    Это не const

Ещё вопросы

Сообщество Overcoder
Наверх
Меню