Форум программистов, компьютерный форум, киберфорум
Наши страницы

Список указателей на авторские объекты, я могу воспользоваться только первым его элементом. Почему? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Приостановка выполнения процесса/потока (windows) http://www.cyberforum.ru/cpp-beginners/thread363211.html
Есть запущенный процесс, например, калькулятор или блокнот, известно ID процесса и его имя. Нужно сделать: на форме есть две кнопки, при нажатии первой выполнение процесса должно приостанавливаться,...
C++ Уважаемые форумчане, помогите понять что требуется.. задали лабу по информатике.. что требуется?? просто я 0 в математике..помогите пожалуйста с кодом или разъясните пожалуйста http://www.cyberforum.ru/cpp-beginners/thread363210.html
Программа для вычисления Зарплаты C++
Всем доброго времени суток. Помогите доработать программу до более менее сносного вида. Суть такова. Программа должна посчитать ЗП, часовая оплата зависит от должности. Далее по количеству...
написать программу подсчета нечетных чисел последовательности C++
нужно написать программу подсчета нечетных чисел последовательности, вводимой с клавиатуры, причем НЕ используя массив, а используя оператор sscanf буду очень благодарна 3.3 Запрещено создавать...
C++ Раздельная компиляция файлов в проекте. Межмодульное взаимодействие http://www.cyberforum.ru/cpp-beginners/thread363198.html
Задан проект-модель почтового сервера Созданы файлы: интерфейс сервера: server.h, интерфейс клиента-client.h, реализации сервера-server.cpp, клиента-client.cpp. Клиентская часть client.cpp...
C++ Поменять местами два числа, не используя дополнительные ячейки памяти Когда вводишь два числа нужно что бы они поменялись местами, не используя при это дополнительные ячейки то есть всего 2 ячейки #include <iostream> using namespace std; int main() { int a,b;... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1701 / 888 / 45
Регистрация: 04.06.2008
Сообщений: 5,498

Список указателей на авторские объекты, я могу воспользоваться только первым его элементом. Почему? - C++

08.10.2011, 20:50. Просмотров 365. Ответов 1
Метки (Все метки)

Друзья! Короче создал ПРОСТОЙ класс всего с одним полем и функцией которая выводит значение этого поля. Создал массив из 2-х указателей на объекты такого класса. После корректно этот массив инициализировал.
А после на основе массива указателей создал список из указателей. И вот тут-то ничего не получатся.

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <string>
#include <list>
using namespace std;
 
 
//Это вот будет описание типа; очень простое
class type {
 public:
  type (int);
  ~type () {};
 
 //Эта вот функция возвращает x
 int f () {return x;};
 
 private:
  int  x;
};
 
//ЭТо вот конструктор просто устанавливает x в нужное значение и всё
type::type (int nomer) {
 x= nomer;
};
 
 
 
int main() {
 
 //Кропаем список из 2-х указателей.
 type** p= new type* [2];
 
 
 //Теперь каждый указатель проинициализируем конкретным объектом типа type
 //То есть будут объекты со значениями 0 и 1
 for (int i= 0; i< 2; i++) {
  p[i]= new type (i);
 }
 
 //ПРоверим
 printf ("%d    \n", (*p[0]).f());
 printf ("%d    \n", (*p[1]).f());
 //Всё корректно
 
 //Теперь скропаем список из указателей
 list<type*> List (p, p + sizeof(p) / sizeof(type*));
 
 //И выведем значения, сперва так
 printf ("%x\n", (**List.begin()).f());
 
 //Ага, а теперь объявим итератор...
 list<type*>::iterator itr= List.begin();
 
 //проверим
 printf ("%x\n", (**itr).f());
 
 
 // и инкременируем его
 itr++;
 
 //Теперь по идее должна итератр должен указывать на адрес второго объекта
 //а ни фига подобного, выводится не единица, а вылетает исключение, почему?
 printf ("%d\n", (**itr).f());
 
 getchar ();
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru