Как глобально инициализировать переменную из struсt? [закрыт]

141
18 мая 2019, 06:20

Есть код, который работает

struct shape {
    static shape *list; //Начало списка
    shape *next;
    shape() {next = list; list =this; }
};
shape *shape::list = nullptr;
void shape_refresh() //Функция не член класса
{
    //
    for(shape* p = shape::list; p; p = p->next) p->draw();
    //
}

Следующий код не работает:

struct shape { 
    static list <shape*> s_list;
    shape();
    virtual ~shape() { s_list.remove(this); }
};
shape *shape::s_list;  //Как в данном месте правильно инициализировать s_list глобально
                       //s_list не видна в цикле for
void shape_refresh(){   //Функция не член класса
    for (list <shape*> p = s_list; !p.empty(); p.pop_front()) p.front()->draw();
}
Answer 1

Вы хотите что-то вроде этого?

struct shape { 
    static list <shape*> s_list;
    shape() {};
    virtual ~shape() { s_list.remove(this); }
};
list<shape*> shape::s_list;  
void shape_refresh(){   //Функция не член класса
    for (list <shape*> p = shape::s_list; !p.empty(); p.pop_front()) p.front()->draw();
}
READ ALSO
Массив заполняется не полностью c++

Массив заполняется не полностью c++

Нужно нарисовать пирамиду, содержащую n строкЕсли n будет, например, 4, то пирамида должна выглядеть следующим образом:

125
Список ip, подключенных к localhost SFML C++

Список ip, подключенных к localhost SFML C++

Хочу спросить, как получить список игроков их ip, на localhost и как отслеживать их подключение

115
Реализация template в .cpp-файле [дубликат]

Реализация template в .cpp-файле [дубликат]

На данный вопрос уже ответили:

142
Не копируются char-ы

Не копируются char-ы

Суть вопроса: почему, если закоментировать dest = new char [lSrc];, то функция работает (с оговорками), а без коммента - dest никак не меняется?

130