Форум программистов, компьютерный форум CyberForum.ru

Лист указателей на объект - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
BAIZOR
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 68
30.01.2011, 22:06     Лист указателей на объект #1
Не получается создать лист указателей на мой объект.
C++
1
list<&My_Object> my_list;
error: list<&My_Object> my_list;

Как это реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2011, 22:06     Лист указателей на объект
Посмотрите здесь:

Не могу объявить массив указателей на объект C++
C++ std::sort. Как сортировать список? (список указателей на объект)
C++ по поводу указателей. Как правильно задавать массив указателей и его удалять?
интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект C++
C++ Как обойтись без указателей и указателей на указатель?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
30.01.2011, 22:14     Лист указателей на объект #2
C++
1
list<My_Object*> my_list;
BAIZOR
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 68
31.01.2011, 00:08  [ТС]     Лист указателей на объект #3
А как достучаться до объекта через вот такую комбинацию?

C++
1
list<list<Object>::iterator>::iterator It=object.begin();
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
31.01.2011, 00:59     Лист указателей на объект #4
Цитата Сообщение от BAIZOR Посмотреть сообщение
создать лист.
По-русски это называется «список».

Цитата Сообщение от BAIZOR Посмотреть сообщение
А как достучаться до объекта через вот такую комбинацию?

C++
1
list<list<Object>::iterator>::iterator It=object.begin();
Здесь просто нужно понимать, что разыменовывание итератора даст в результате другой итератор.
А зачем тебе такая гидра, если не секрет?
BAIZOR
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 68
31.01.2011, 01:12  [ТС]     Лист указателей на объект #5
***It не проходит,я все варианты разыменования перепробовал и с разными комбинациями добавления ->

Например
*It->
**It->
***It->
***It.
**It.
*It.


Не секрет,у меня есть список итераторов(для уменьшения потребления ресурсов) которые хранят в себе объекты,и мне надо по этому списку перемещаться,нужен еще 1 итератор...

Добавлено через 8 минут
Я не правильно выразился...
да и в принципе по коду видно,а нужно это все для того чтобы объект класса в котором написана эта строка,мог видеть куда ему надо передавать сигнал дальше,а поскольку этих объектов очень много,и они очень густо связаны,то для оптимизации памяти я использую указатели(итераторы).
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.01.2011, 01:50     Лист указателей на объект #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <list>
#include <string>
 
class Sentence {
    std::string str;
public:
    Sentence() : str("Nothing to say.") {}
    Sentence(const std::string & s) : str(s) {}
    void sayIt() const {
        std::cout << str << std::endl;
    }
};
 
int main(){
    std::list<Sentence *> list;
    list.push_back(new Sentence("Hello, world!"));
    list.push_back(new Sentence("Goodbye, world!"));
    
    for ( std::list<Sentence *>::const_iterator i = list.begin(); i != list.end(); ++i )
        (*i)->sayIt();
    
    return 0;
}
BAIZOR
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 68
31.01.2011, 07:30  [ТС]     Лист указателей на объект #7
easybudda, вы по сути не поняли вопроса.
Мне надо исходник по получению элемента из вот такой комбинации:
C++
1
list<list<Object>::iterator>::iterator It=object.begin();
как из It в итоге выдрать объект Object?
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
31.01.2011, 11:54     Лист указателей на объект #8
BAIZOR, оператор «стрелка» (->) имеет более высокий приоритет, чем оператор разыменовывания. Нужно правильно расставить скобки.
BAIZOR
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 68
31.01.2011, 18:41  [ТС]     Лист указателей на объект #9
А вы бы не могли мне с этим помочь?
А то что-то уж никак не получается... =(
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
31.01.2011, 19:29     Лист указателей на объект #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<iostream>
#include<list>
using namespace std;
class Object{
    public:
        int val;
        friend ostream& operator<<(ostream& o, Object a){
            cout<<a.val;
        }
};
 
int main(){
    list<Object> l;
    Object o;
    for(int i=0; i<10; i++){
        o.val=i;
        l.push_back(o);
    }
    list<Object>::iterator it=l.begin();
    list<Object>::iterator it1=--l.end();
    list<list<Object>::iterator> object;
    object.push_back(it);
    object.push_back(it1);
    list<list<Object>::iterator>::iterator It=object.begin();
    for(It=object.begin(); It!=object.end(); It++){
        cout<<**It<<"  ";
    }
}
BAIZOR
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 68
31.01.2011, 22:22  [ТС]     Лист указателей на объект #11
igorrr37, **It (а дальше мне нужная функция внутри объекта).use
Но,сразу после (.) у меня открываются подсказки(что можна юзать после точки) и это итератор =\
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
31.01.2011, 22:32     Лист указателей на объект #12
C++
1
(**It).use();
BAIZOR
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 68
31.01.2011, 22:42  [ТС]     Лист указателей на объект #13
igorrr37, Огромной спасибо! Никогда не знал что есть даже такой синтаксис о_О
а не могли бы вы мне его объяснить?

Добавлено через 3 минуты
секундочку... муть: error C2228: left of '.use' must have class/struct/union
use of undefined type 'Synaptic'

Synaptic (Object)

Добавлено через 2 минуты
насколько я понял,то пред инициализации(или как это называется)класса не достаточно что бы использовать его функции?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2011, 23:05     Лист указателей на объект
Еще ссылки по теме:

Может ли объект-член, или объект-элемент достучаться к содержащему его? C++
Создать специализацию для шаблона, которая принимает массив указателей на строки и количество этих указателей C++
Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
31.01.2011, 23:05     Лист указателей на объект #14
Цитата Сообщение от BAIZOR Посмотреть сообщение
а не могли бы вы мне его объяснить?
(**It).use();
После первого разыменования получаем тот итератор, на который ссылается данный итератор,
второе разыменование применяется уже к тому итератору поэтому получаем сам объект. Скобки
нужны т.к. оператор точка имеет больший приоритет чем *.
Yandex
Объявления
31.01.2011, 23:05     Лист указателей на объект
Ответ Создать тему
Опции темы

Текущее время: 10:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru