Russian Qt Forum

Программирование => С/C++ => Тема начата: sandy от Июль 04, 2005, 00:21



Название: Можно ли использовать вектор как член класса?
Отправлено: sandy от Июль 04, 2005, 00:21
Имеется:

#include <vector>

struct str {
...
};

class cls {
std::vector<str>v(10);
...
};

void cls::f()
{
v.resize(v.size()+1)
...
}

Ругается следующим образом:
invalid data member initialization
(use `=' to initialise static data members)

Если пробую объявить этот член так:
std::vector<str>v;
не ругается, компилируется. Но при исполнении - segmentation fault (core dump)


Название: Можно ли использовать вектор как член класса?
Отправлено: Admin от Июль 04, 2005, 10:08
попробуй заменить
std::vector<str>v(10);

на

std::vector<str>v;


Название: Re: Можно ли использовать вектор как член класса?
Отправлено: sandy от Июль 04, 2005, 11:39
Цитата: "sandy"
Если пробую объявить этот член так:
std::vector<str>v;
не ругается, компилируется. Но при исполнении - segmentation fault (core dump)


Название: Можно ли использовать вектор как член класса?
Отправлено: sandy от Июль 04, 2005, 11:41
А что скажете по ипользованию std::vector<str>* v, а в функцию передавать std::vector<str>& v?
Это я в Страуструпа вычитал, но еще не испытал.
Если получится - отпишу


Название: Re: Можно ли использовать вектор как член класса?
Отправлено: sandy от Июль 05, 2005, 13:09
Короче говоря, так все это оформить надо:

#include <vector>

struct str {
...
};

class cls {
std::vector<str>v;
...
public:
cls();
};

cls::cls() : v(10) {}

void cls::f()
{
v.resize(v.size()+1)
...
}

Так мне подсказали на http://www.nixp.ru/forum/