Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

"одно,двух(неважно)направленный список"

5.2K
05 июля 2004 года
rapa
13 / / 11.06.2004
Kogda u menya est' :
class node
{
int data;
.....
}
&
class list
{
node *ptr;
...
}
Ya mogu zanosit' dannye v "data" cherez funkzii "list"???
Spasibo
4.1K
05 июля 2004 года
_voron
19 / / 07.12.2003
data является закрытым(private) членом класса node, поэтому работать с data может только сам класс node.
Можно сделать так:

class node{
int data;
public:
void set_data(int value){ data = value; }
int get_data(){ return (data); }
...
};


Тогда класс list сможет работать с data через функции set_data и get_data.

А еще лучше сделать data свойством, в принципе это тоже самое, только работать будет удобнее:

class node{
int f_data;
void set_data(int value){ f_data = value; }
public:
__property int data = {read = Fdata, write = set_data};
...
};


Теперь работать с data можно непосредственным обращением

n.data = 1234; //запись значения
int d = n.data; //чтение значения
5.2K
06 июля 2004 года
rapa
13 / / 11.06.2004
Цитата:
Originally posted by _voron
data является закрытым(private) членом класса node, поэтому работать с data может только сам класс node.
Можно сделать так:

class node{
int data;
public:
void set_data(int value){ data = value; }
int get_data(){ return (data); }
...
};


Тогда класс list сможет работать с data через функции set_data и get_data.

А еще лучше сделать data свойством, в принципе это тоже самое, только работать будет удобнее:

class node{
int f_data;
void set_data(int value){ f_data = value; }
public:
__property int data = {read = Fdata, write = set_data};
...
};


Теперь работать с data можно непосредственным обращением

n.data = 1234; //запись значения
int d = n.data; //чтение значения


"сделать data свойством"-chto znachit sdelat' svoysvom?

4.1K
06 июля 2004 года
_voron
19 / / 07.12.2003
"Сделать свойством" значит какому-либо закрытому члену-данных класса назначить функции чтения/записи.
Свойство объявляется следующим образом:
__property <тип> <имя_свойства> = {<список_атрибутов>}
Например:
__property int data = {read = get_data, write = set_data};
get_data/set_data - функции, осуществляющие чтение/запись. Когда пишешь n.data = 3;, то происходит вызов функции set_data(int) с параметром 3, которая должна быть описана в классе.
int d = n.data осуществляет вызов get_data(). Если при чтении нужно вернуть само значение, то можно написать в списке атрибутов
read = f_data, где f_data - поле, хранящее значение.
3
06 июля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by rapa
Kogda u menya est' :
class node
{
int data;
.....
}
&
class list
{
node *ptr;
...
}
Ya mogu zanosit' dannye v "data" cherez funkzii "list"???
Spasibo



По сути вопроса.
Ты уверен, что поле дата должно быть приватным?
Если ты специально сделал поле data приватным, то открыть его для методов класса list ты можешь добавив в описание класса node строку friend list;

Код:
class list;

class node
{
friend list;

int data;
.....
};

class list
{
node *ptr;
...
};


Теперь о другом. Постарайся давать топикам соответствующее теме название. Лично я никакой связи вопроса со связанными списками не вижу.

Кроме того, если тебе нужен связанный список не в качестве упражнения, то целесообразней воспользоваться стандартными контейнерами из STL.
487
11 июля 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by rapa
Kogda u menya est' :
class node
{
int data;
.....
}
&
class list
{
node *ptr;
...
}
Ya mogu zanosit' dannye v "data" cherez funkzii "list"???
Spasibo



Хм. Если тебе нужен обычный список - зачем его делать в виде класса?

Все можно сделать гораздо проще:

typedef struct _node
{
int data;
_node *next;
} list;

621
11 июля 2004 года
Бешеный кролик
151 / / 23.03.2004
Цитата:
Originally posted by ddnh_bc


Хм. Если тебе нужен обычный список - зачем его делать в виде класса?

Все можно сделать гораздо проще:

typedef struct _node
{
int data;
_node *next;
} list;



А еще в VCL есть очень удобный класс TList. Я всегда им пользуюсь :)

А вообще, вам уже правильно ответили, что data - private (т.е. недоступный извне ) член класса. (Т.к. в С++ все объявленные члены класса по умолчанию становятся private). Можно, например, сделать его public, и тогда не будет таких проблем. (Могут появиться другие :))

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог