Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 14.04.2012, 17:57   #1
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Vector и объект класса

допустим нужно организовать список объектов класса

Class C_a
{
float nx;
};

C_a a;

vector<C_a>list_a;

list_a.pushback(a); //1
list_a.pushback(a);//2
получается что вектор копирует объект в себя тк при обращении к 1 или 2 значения nx у каждого свои )

как вообще правильно сделать это дело ?


в с++ Нуб )
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием
Старый 14.04.2012, 19:59   #2
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Vector и объект класса

ты забыл написать, какой результат ты хочешь получить.
чтобы были одинаковые объекты в list_a[0] и list_a[1]?
ну суй в вектор не объект, а указатель на объект или идентификатор объекта в другом массиве.
(Offline)
 
Ответить с цитированием
Старый 14.04.2012, 20:58   #3
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Vector и объект класса

vector<C_a*>list_a;

list_a.pushback(&a); //1
list_a.pushback(&a);//2
только это какая-то лажа. какой результат хочешь получить?
(Offline)
 
Ответить с цитированием
Старый 14.04.2012, 21:39   #4
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Ответ: Vector и объект класса

список объектов класса к которым можно было бы обращатся

как бы аналог блиц type
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием
Старый 14.04.2012, 22:24   #5
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Vector и объект класса

работать с указателями объектов
(Offline)
 
Ответить с цитированием
Старый 15.04.2012, 11:18   #6
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Ответ: Vector и объект класса

#include <iostream>
#include <vector>

using namespace std;

class Tman
{
public:
    Tman(int temp_x);
    ~Tman();
    int get_x();
    void set_x(int temp_x);
private:
    int x;
};


Tman::Tman(int temp_x)
{
    x=temp_x;
};

Tman::~Tman()
{
  //что писать в деструкторе
};

int Tman::get_x()
{
   return x;
};

void Tman::set_x(int temp_x)
{
   x=temp_x;
};




vector<Tman>list_mans;

int main()
{


list_mans.push_back(Tman(2));
list_mans.push_back(Tman(3));
list_mans.push_back(Tman(6));

for(int i=0;i<list_mans.size();i++)
{
    cout<<list_mans[i].get_x()<<"\n";
}

list_mans[2].set_x(88);

for(int i=list_mans.size()-1;i>=0;i--)
{
    cout<<list_mans[i].get_x()<<"\n";
}


    return 0;
}

хотелось бы узнать адекватно это или нет?
и если нет то как адекватнее, лучше с коротким примером и немного объяснения
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием
Старый 15.04.2012, 14:56   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Vector и объект класса

Лафоре Р. Объектно-ориентированное программирование в С++. 4-е издание — СПб.: Питер, 2005. — 924 с.

upd: кроме шуток.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Spy4433 (15.04.2012)
Старый 16.04.2012, 14:37   #8
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Vector и объект класса

Сообщение от Mr_F_ Посмотреть сообщение
ты забыл написать, какой результат ты хочешь получить.
чтобы были одинаковые объекты в list_a[0] и list_a[1]?
ну суй в вектор не объект, а указатель на объект или идентификатор объекта в другом массиве.
инициировать с new все, что попадает в вектор, кроме строк! иначе они со стека поудаляются нахрен, и в векторе будут лежать невалидные объекты.
(Offline)
 
Ответить с цитированием
Старый 16.04.2012, 16:50   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Vector и объект класса

Сообщение от pozitiffcat Посмотреть сообщение
инициировать с new все, что попадает в вектор, кроме строк! иначе они со стека поудаляются нахрен, и в векторе будут лежать невалидные объекты.
три раза перечитал - не понял. Перескажи другими словами, пожалуйста.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 16.04.2012, 17:10   #10
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Vector и объект класса

я думаю, он имел ввиду, что не стоит забывать, что объекты, указатели на которые ты кидаешь в вектор, надо создавать через new, а не объявляеть на стеке где попало, иначе они удалятся после выхода из контекста, а указатели сделаются невалидными)
впрочем, тут необязательно именно через new. просто надо следить, чтобы время жизни объектов совпадало с временем жизни контейнера.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (16.04.2012)
Старый 16.04.2012, 18:08   #11
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Vector и объект класса

Стоит при этом отметить, что память под строковые литералы (const char*) выделяется статически
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (16.04.2012)
Старый 17.04.2012, 08:16   #12
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Vector и объект класса

Сообщение от Mr_F_ Посмотреть сообщение
я думаю, он имел ввиду, что не стоит забывать, что объекты, указатели на которые ты кидаешь в вектор, надо создавать через new, а не объявляеть на стеке где попало, иначе они удалятся после выхода из контекста, а указатели сделаются невалидными)
впрочем, тут необязательно именно через new. просто надо следить, чтобы время жизни объектов совпадало с временем жизни контейнера.
Да. все верно
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:39.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com