Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
ooki2day
12 / 12 / 0
Регистрация: 23.10.2008
Сообщений: 281
1

список класса

29.10.2011, 09:23. Просмотров 803. Ответов 6
Метки нет (Все метки)

Здравствуйте. Могу ли я совершить подобное:
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;
Вот так можно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2011, 09:23
Ответы с готовыми решениями:

Составить двусвязный список на основе класса, объекты которого будут формировать этот список
Составить двусвязный список на основе класса, объекты которого будут формировать этот список. В...

как сделать чтобы объект производного класса сам себя добавлял в список или массив указателей базового класса?
я хотел так, но программа просто падает void Student::add(Base** head) { cout << "I here" <<...

3 класса: список, стек(как список), очередь(как список)
препод дал задание: написать 3 класса (список, стек, очередь), методы: вывод, добавление,...

Список объектов класса
Всем добрый день. Допустим есть класс. class Test { public: void Add() { ... } } void...

Деструктор класса список
Доброго времени суток. Создал класс односвязный список. Не знаю как сделать деструктор таким, чтобы...

6
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
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;
};
0
cpld
1 / 1 / 0
Регистрация: 28.10.2011
Сообщений: 7
29.10.2011, 10:35 3
Вроде ничего незаконного нет (комплиятор поправит, если что).
Но. Оператор while действительно делает перебор по списку, но
создания списка я тут не вижу. Удобнее создать класс spisok,
методы добавления и удаления. Или пользоваться STL.
1
ooki2day
12 / 12 / 0
Регистрация: 23.10.2008
Сообщений: 281
29.10.2011, 11:12  [ТС] 4
Цитата Сообщение от rangerx Посмотреть сообщение
Но вообще, в таких случаях обычно используют ключевое слово struct, а не class
нужен именно класс

Добавлено через 1 минуту
Цитата Сообщение от cpld Посмотреть сообщение
Вроде ничего незаконного нет (комплиятор поправит, если что).
Но. Оператор while действительно делает перебор по списку, но
создания списка я тут не вижу. Удобнее создать класс spisok,
методы добавления и удаления. Или пользоваться STL.
можно хотя бы маааленький примерчик? не понял куда добавлять и как
0
Сыроежка
Заблокирован
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).
0
ooki2day
12 / 12 / 0
Регистрация: 23.10.2008
Сообщений: 281
30.10.2011, 09:13  [ТС] 6
Цитата Сообщение от Сыроежка Посмотреть сообщение
У класса, объявленного с помощью ключевого слова struct, все поля по умолчанию являются открытыми. Тогда как у класса, объявленного с помощью ключевого слова class, все поля по умолчанию являются закрытыми.
вот поэтому и нужен именно класс.
грубо говоря, нужен массив или список класса) как бы это оформить? это я имел в виду
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
30.10.2011, 09:42 7
Цитата Сообщение от Сыроежка Посмотреть сообщение
union
Объединение это не класс и не структура. Объединение это другое.
0
30.10.2011, 09:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2011, 09:42

Создание класса список
Создать класс Элемент списка (Node) класс Список (List) Cписок должен быть двухсвязным. Класс...

Список из объектов класса
Здравствуйте, возник вопрос- Как правильно сделать двунаправленный список( не циклический) из...

Напечатать список класса
Условие такое.В строковом массиве храняться фамилии и инициалы учеников класса.Требуется напечатать...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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