Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Комутатор классов


Автор: AndreyVN 22.9.2004, 11:34
Привет, запутался малость:
есть класс TКот, как споектировать класс TКоты, чтобы ТХозяин мог по индексу i получить доступ к экземпляру класса i-го кота?

Код

class TКоты: public TKoт
{
 ТКоты::CreateCats()
 {
    for(int i=0; i<6; i++) Кот[i]= new TКот
 }

}

class ТХозяин: public TКоты

Не соображу как мне массивом указателей воспользоваться...

Автор: Borisff2003 22.9.2004, 11:38
class ТХозяин: public TКоты

Это следует читать, как : "Хозяин есть куча котов" butbut.gif

а в коты сделай operator[]

ЗЫ: Да и кстати Куча котов, это не кот. Наследование подразумевает связь is a.. , т.е. про потомка можно сказать что он есть родитель без всяких ограничений но со специфическимо свойствами. Так Роза цветок и Тюльпан цветок. а вот букет, не цветок, и его не надо наследовать от цветка

Автор: AndreyVN 22.9.2004, 12:43
В действительности все не так как на самом деле. А на самом деле я переписываю свою программу, которая была написана в процедурном стиле, там куча массивов структур и все запутано хуже некуда. Пытаюсь отсортировать код по классам.

В общем, для совместимости мне надо чтобы класс Хозяин вызывал по имени функцию из класса Кот а весь механизм привязки к конкретному i-тому коту надо где-то спрятать.


PS: А что такое operator[] qstn.gif

Автор: Borisff2003 22.9.2004, 12:56
Код


class TКоты//не надо наследовать, смычла нет
{
ТКоты::CreateCats()
{
 for(int i=0; i<6; i++) Кот[i]= new TКот
}
TКот& operator[](int pos)
{
  return *(Kot[pos]);
};
}

Автор: AndreyVN 22.9.2004, 13:24
Спасибочки, счщас попробую.

Автор: DonPager 24.9.2004, 19:07
Borisff2003 к стати а как описать перегрузку для двумерного массива ?
например для доступа к элементу m[1][10] - где m - матрица комплексных чисел...

Автор: mr.DUDA 24.9.2004, 21:00
2 DonPager,

Модератор: Пожалуйста, один топик - один вопрос.

Автор: Borisff2003 27.9.2004, 05:24
DonPager
Наверное надо сделать класс, строка , в ней переопределить оператор [], а в классе матрицы сделать чтоб возвращалась ссылка на строку. Может и проще можно, но врядли

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)