** 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:"Как можно передать значеня из одного класса в другой" — на сколько я знаю значения значеня из одного класса в другой невозможно передать. Можно значеня из одного ОБЪЕКТА (первого класса) передать данные в другой ОБЪЕКТ (второго класса)
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];
}
}
| |
|