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

список класса - C++

Восстановить пароль Регистрация
 
ooki2day
 Аватар для ooki2day
12 / 12 / 0
Регистрация: 23.10.2008
Сообщений: 281
29.10.2011, 09:23     список класса #1
Здравствуйте. Могу ли я совершить подобное:
C++
1
2
3
4
5
6
class A
{
private:
    int i;
    A *next;
};
и дальше обращаться как со списком? Например:
C++
1
2
3
4
5
6
7
8
A *a = new A;
a->i=5;
a->next=NULL;
//тут еще много такие же действия с a
A *p=a;
while(p->next!=NULL)
    p=p->next;
p->next->i=12;
Вот так можно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
29.10.2011, 10:35     список класса #2
Если сделать поля класса открытыми, то да
C++
1
2
3
4
5
6
class A
{
public:
    int i;
    A *next;
};
Но вообще, в таких случаях обычно используют ключевое слово struct, а не class
C++
1
2
3
4
5
struct A
{
    int i;
    A *next;
};
cpld
1 / 1 / 0
Регистрация: 28.10.2011
Сообщений: 7
29.10.2011, 10:35     список класса #3
Вроде ничего незаконного нет (комплиятор поправит, если что).
Но. Оператор while действительно делает перебор по списку, но
создания списка я тут не вижу. Удобнее создать класс spisok,
методы добавления и удаления. Или пользоваться STL.
ooki2day
 Аватар для ooki2day
12 / 12 / 0
Регистрация: 23.10.2008
Сообщений: 281
29.10.2011, 11:12  [ТС]     список класса #4
Цитата Сообщение от rangerx Посмотреть сообщение
Но вообще, в таких случаях обычно используют ключевое слово struct, а не class
нужен именно класс

Добавлено через 1 минуту
Цитата Сообщение от cpld Посмотреть сообщение
Вроде ничего незаконного нет (комплиятор поправит, если что).
Но. Оператор while действительно делает перебор по списку, но
создания списка я тут не вижу. Удобнее создать класс spisok,
методы добавления и удаления. Или пользоваться STL.
можно хотя бы маааленький примерчик? не понял куда добавлять и как
Сыроежка
Заблокирован
29.10.2011, 19:08     список класса #5
Цитата Сообщение от ooki2day Посмотреть сообщение
нужен именно класс

Добавлено через 1 минуту


можно хотя бы маааленький примерчик? не понял куда добавлять и как
Во-первых, struct, class, union - это в С++ ключевые слова для объявления класса. То есть и объявление

C++
1
struct A;
и

C++
1
class A;
это все объявления классов! Различие между ними состоит лишь в классах доступа. У класса, объявленного с помощью ключевого слова struct, все поля по умолчанию являются открытыми. Тогда как у класса, объявленного с помощью ключевого слова class, все поля по умолчанию являются закрытыми. Но и в первом, и во-втором случае вы имеете дело с классом.

Теперь, что касается вашего исходного кода. Вы объявляете поля вашего класса закрытыми, а потому к ним нельзя обращаться а программе напрямую. Компилятор должен выдать сообщение об ошибке, что ни поле i, ни поле next недоступны при обращении к ним вне методов класса.

Кроме того некорректен ваш цикл. Вы ищите элемент, у которого поле next равно нулю, а затем пытаетесь изменить значение по недей1ствительному адресу объекта, то есть по адресу 0 ( NULL).
ooki2day
 Аватар для ooki2day
12 / 12 / 0
Регистрация: 23.10.2008
Сообщений: 281
30.10.2011, 09:13  [ТС]     список класса #6
Цитата Сообщение от Сыроежка Посмотреть сообщение
У класса, объявленного с помощью ключевого слова struct, все поля по умолчанию являются открытыми. Тогда как у класса, объявленного с помощью ключевого слова class, все поля по умолчанию являются закрытыми.
вот поэтому и нужен именно класс.
грубо говоря, нужен массив или список класса) как бы это оформить? это я имел в виду
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2011, 09:42     список класса
Еще ссылки по теме:

C++ 3 класса: список, стек(как список), очередь(как список)
C++ - Реализация класса «двусвязный список» C++
C++ Шаблон класса двусвязный список

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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.10.2011, 09:42     список класса #7
Цитата Сообщение от Сыроежка Посмотреть сообщение
union
Объединение это не класс и не структура. Объединение это другое.
Yandex
Объявления
30.10.2011, 09:42     список класса
Ответ Создать тему
Опции темы

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