C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Передача значений
** dima
Отправлено: 02.09.2004, 08:40


Не зарегистрирован







Как можно передать значеня из одного класса в другой, тоесть скопировать класс
Например есть один класс со значениями и есть другой пустой, и как сделать так чтобы тот другой был таким же как первый.
Guest
Отправлено: 02.09.2004, 09:08


Не зарегистрирован







Грамотно — руками (предусмотреть метод).
VCL класс — виртуальный метод Assign. Осуществляет "тупое" копирование.
Можно перекрыть и сделать то, что надо.
Konstantine
Отправлено: 02.09.2004, 09:11


Мастер участка

Группа: Модератор
Сообщений: 545



Объяви перегрузку операции = , в которой и копируй все поля...
Что-то типа этого:

в .h:
CODE
class TClass
{
...
public:
           TClass& operator =(TClass& Source);
...
}

в .cpp:
CODE
TClass& TClass::operator =(TClass& Source)
{
  field1=Source.field1;
  field2=Source.field2;
.... и т.д.
  return *this;
}

Возврат нужен для того, чтоб можно было написать:
CODE
Сlass1=Class2=Class3;
и т.д.
NedioVic
  Отправлено: 22.01.2005, 07:45


Ученик-кочегар

Группа: Участник
Сообщений: 14



Если передаются все члены-данные, то попробуй для второго класса сделать конструктор копии — на мой взгляд это довольно красивое решение.

Re:"Как можно передать значеня из одного класса в другой" — на сколько я знаю значения значеня из одного класса в другой невозможно передать. Можно значеня из одного ОБЪЕКТА (первого класса) передать данные в другой ОБЪЕКТ (второго класса) biggrin.gif biggrin.gif biggrin.gif

CODE


/** Конструктор  копии **/

Matrix::Matrix(const Matrix& m)
{
  int i,j,k;

  razm = m.razm;
  x = m.x;
  y = m.y;

  // Попытка выделить память под массив
       try {
               b = new type* [x];
                 for(int i=0; i<x; i++)
                   b[i]=new type[y];
            }
            catch (std::bad_alloc)
               {
                 Error(1); // Ошибка выделения памяти
               }
   // Копирование значений элементов массива
        for(i=0;i<x;i++)
          for(j=0;j<y;j++)
          {
             b[i][j]=m.b[i][j];
          }
  }

Вернуться в Вопросы программирования в C++Builder