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

Ваш аккаунт

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

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

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

Классы

61K
03 ноября 2010 года
GanBit
4 / / 23.09.2010
При использовании разных классов, чтобы обмениваться данными между разными классами, можно через public функции, в которые записываются те переменные которые передаются. А если переменных, которые нужно передать очень много, ну скажем больше 10, то это наверное уже будет некрасиво писать функции с длинным списком переменных. Как тогда избежать такой ситуации?
Одним из выходов это сделать переменные глобальными, но использование глобальных переменных нежелательно, поэтому этот выход не подходит.
Сказали, что можно через члены-переменные классов это организовать, но у меня не получается, вот что я хочу:

class TSmall
{
private:

protected:

public:
int h;
void Get();

};

void TSmall::Get()
{
//тут выдает ошибку, так как не знает переменную x
h=x; //как сделать так, что класс TSmall знал о существовании переменной x?
}

class TMain
{
private:

protected:

public:
int x;
int y;
void Go();
TSmall *Small;
};

void TMain::Go()
{
for(x=0;x<10;x++)
{
Small=new TSmall;
Small->Get(); //хочу чтобы процедура Get работала с переменной x
}
}

Или как я делаю это вообще нельзя реализовать?
11
04 ноября 2010 года
oxotnik333
2.9K / / 03.08.2007
а какая литература была прочитана по этому вопросу?
а в курсе, что ф-ции могут быть как пустыми, так и принимающими параметры? (это намек на определение TSmall::Get)
32K
07 ноября 2010 года
Агроном
28 / / 14.11.2008
Правильно сказал oxotnik333,и если переменных много,определяй их в массив или структуру и передавай параметром в функцию.
33K
16 ноября 2010 года
hivewarrior
205 / / 16.11.2010
Цитата: oxotnik333

а в курсе, что ф-ции могут быть как пустыми, так и принимающими параметры? (это намек на определение TSmall::Get)


Я бы лучше намекнул на то, что функции могут еще возвращать параметры, например. Что-то типа return &h.

11
16 ноября 2010 года
oxotnik333
2.9K / / 03.08.2007
Цитата: hivewarrior
Я бы лучше намекнул на то, что функции могут еще возвращать параметры, например. Что-то типа return &h.


а если кто изменить значение по ссылке, а надо в объекте на изменение реагировать? нету в сях простого механизма свойств

33K
16 ноября 2010 года
hivewarrior
205 / / 16.11.2010
 
Код:
class TSmall
{
public:
int h;
void Get();
};
...
TSmall *Small;
...
Small=new TSmall;

h находится в паблике, к нему вообще проще Small->h обращаться, а это не отследишь уже никак:rolleyes:. Думаю, бессмысленно говорить о такой слежке при такой реализации класса.
11
16 ноября 2010 года
oxotnik333
2.9K / / 03.08.2007
Цитата: hivewarrior
h находится в паблике, к нему вообще проще Small->h обращаться, а это не отследишь уже никак:rolleyes:. Думаю, бессмысленно говорить о такой слежке при такой реализации класса.


Быдлокод, что тут скажешь.

33K
17 ноября 2010 года
hivewarrior
205 / / 16.11.2010
Цитата: oxotnik333
Быдлокод, что тут скажешь.


Не скажи, паблик очень удобен, если тебе не сильно волнует, какие данные там хранятся, а скорость обработки важна. Так ты только обратишься по указателю, иначе тебе придется вызвать функцию... Ну ты понял.;)
Алсо,
[QUOTE=GanBit]
использование глобальных переменных нежелательно
[/QUOTE]
:eek:
Кто тебе сказал такую глупость? Глобальные переменные используются только там, где они нужны. Особенно глобальные константы. Проблемы глобальных переменных начинаются при использовании от 5 и больше индусов, которые называют их только как x и y. Ну и еще несколько интересных минусов. У вшивой программы 100МБ в ОЗУ, например.

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