one pavel: Вы создали vector в статической памяти и пытаетесь объект вернуть из метода по значению.
Возвращая данные по значению они копируются, не так ли ? Походу создается новый пустой вектор,
который присваивается вашей переменной. А _vect благополучно умирает не выходя из области видимости
метода.
Возвращая данные по значению они копируются, не так ли ?
Копируются конечно. оператор
= перегружен для этих целей.
На самом деле вопрос немного меняется. Я вызывал конструктор из конструктора:
singleton::singleton(){
singleton::singleton(600, 400);
}
А инициализация vect была тут:
singleton::singleton(int , int)
{
this->vect = singleton::initVector();
}
Я думал, что это не существенно, но вот так получилось то, что нужно:
// Файл singleton.h
class singleton{
... // вся кухня с инициализацией singleton
private:
...
std::vector<someclass *> * vect;
std::vector<someclass * > *initVector();
};
// Файл singleton.cpp
singleton::singleton(){
this->vect = *this->initVector();
}
std::vector<someclass* > * singleton::initVector(){
std::vector<someclass* > * vect = new std::vector<someclass* >();
for (int i = 0; i < 4; { _vect->push_back(new someclass()); }
return _vect;
}
Спасибо за книгу! Я уже не один десяток раз на неё натыкался. В ближайшее время изучу:)