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

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

Войти
Регистрация
Восстановить пароль
 
ooki2day
12 / 12 / 0
Регистрация: 23.10.2008
Сообщений: 281
#1

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

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

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

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

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

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

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

Напечатать список класса - C++
Условие такое.В строковом массиве храняться фамилии и инициалы учеников класса.Требуется напечатать список класса с указанием для каждого...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
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
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
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++
потребовалось выполнить такое задание, вот только не могу сообразить с чего начать и как собственно будет выглядеть код (в связи с тем, что...

Шаблон класса двусвязный список - C++
Для решения задачи описать и использовать шаблон класса "двусвязный список". Необходимо составить программу которая содержит...

Шаблон класса двусвязный список - C++
Доброго времени суток! Препод дал задание реализовать шаблон класса двусвязный список. Сам класс написал, но не знаю как сделать из него...

Бесконечный список объектов класса? - C++
В данный момент изучаю тему Классы и пробую практиковаться.:) И недавно возник вопрос: как сделать список объектов с количество заданным...


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

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

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