Russian Qt Forum
Ноябрь 23, 2024, 04:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Можно ли использовать вектор как член класса?  (Прочитано 7663 раз)
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
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Июль 04, 2005, 10:08 »

попробуй заменить
std::vector<str>v(10);

на

std::vector<str>v;
Записан
sandy
Гость
« Ответ #2 : Июль 04, 2005, 11:39 »

Цитата: "sandy"
Если пробую объявить этот член так:
std::vector<str>v;
не ругается, компилируется. Но при исполнении - segmentation fault (core dump)
Записан
sandy
Гость
« Ответ #3 : Июль 04, 2005, 11:41 »

А что скажете по ипользованию std::vector<str>* v, а в функцию передавать std::vector<str>& v?
Это я в Страуструпа вычитал, но еще не испытал.
Если получится - отпишу
Записан
sandy
Гость
« Ответ #4 : Июль 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/
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 22.