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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
BAIZOR
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 68
#1

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

30.01.2011, 22:06. Просмотров 1310. Ответов 13
Метки нет (Все метки)

Не получается создать лист указателей на мой объект.
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++
Здравствуйте! Такой вопрос. При объявлении массива указателей на объект появляются 3 ошибки. void Cindex::merge(Ckey *A, int l, int m, int...

Что возвращать из vector-a указателей, если объект не найден? - C++
Все добра! Подскажите что возвращать если элемент не найден ? class A { public: A(int val) { a = val; } int a; };

Указатель объект на объект (фикс ошибки) - C++
/*Есть некий объект ObjectOne который содержит в private: такую строку*/ ObjectTwo *obj = new ObjectTwo(); /*При выводе на экран...

Почему допустимо создавать объект по другому объекту, но нельзя присваивать уже созданный объект, другому созданному объекту? - C++
Это можно : Array a(10); a.set(0,5); Array b(a); А это нельзя : Array a(10); Array b(20); a = b;

Связанный лист - C++
Здравствуйте, не могу вывести все элементы связанного списка.. генерация проходит, а вывод нет.. #include &lt;iostream&gt; using namespace...

Декартов лист - C++
Помогите реализовать класс. Я новичок и пытаюсь разобраться :) и если кому не сложно, то напишите какие нибудь подсказки по этой задачи)

арифметика указателей - C++
Здравствуйте. Объясните, пожалуйста, код из инета: 1. &quot;переменная A типа int приводится к типу unsigned&quot; приводится к бесзнаковому...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,909
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
267 / 169 / 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
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
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
267 / 169 / 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
1641 / 1269 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 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
1641 / 1269 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 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++
Есть ли аналог нижеуказанной строки в си? Создается массив указателей, необходим для работы с функциями работы с виртуальной памятью...

Дереференс указателей - C++
после прочтения мануала появилась необходимость использовать beth = *ted; но оно выдает еррор C2100 =\ надо: есть size_t arg =...

удаление указателей - C++
Я создал указатель и выделил память vector &lt; vector &lt;Obj&gt; &gt; *p_L = new vector&lt; vector &lt;Obj&gt; &gt;; Как мне теперь освободить...

Сложение указателей - C++
Чисто декларативно замечу что это не безсмысленная операция, как нам о том повествуют всюду. пример: ExpressionEdit* a = split ?...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru