Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
#1

Присваивание значений одного класса другому. - C++

19.08.2010, 15:32. Просмотров 1483. Ответов 19
Метки нет (Все метки)

Скажите, могу ли я присвоить значения одного объекта класса другому объекту того же класса?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class card
{
//код код код
};
 
int main()
{
card c1[52], c2[52], c3[x][y];
// заполняем класс c1
// в цикле:
c2[j] = c1[j]; //возможно ли?
c3[x][y] = c1[j] // а так?
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2010, 15:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Присваивание значений одного класса другому. (C++):

Передача свойства одного экземпляра класса другому экземпляру класса - C++
#include <tchar.h> class A { public: A(); int aVar; }; class B : public A

Присваивание значений членам класса - C++
Доброго времени суток. Возникла проблема, в классе имеется простая функция set, которая присваивает значения четырем элементам класса,...

В чем заключается наследование одного класса другому? - C++
Вообщем есть пара заданий теория ,можек кто-нибудь помочь и ответить на них 1. В чем заключается наследование одного класса другому? В...

Как передать параметры конструктора одного класса другому? - C++
Скажите пожалуйста, как это должно работать? Как передать параметры конструктора одного класса другому? #include <iostream> using...

Полиморфизм, наследование и приведение экземпляров класса одного к другому - C++
Есть некий класс со своими переменными,его экземпляр занимает какое-то количество памяти. Интерфейс выглядит примерно так: /*...

Наследование: как передать массив одного класса другому классу? - C++
Доброе время суток, нужна помощь. Не могу сотворить чудо. Сомневаюсь уже во всём. Как передать массив одного класса другому классу? Дабы...

19
Dzhej-Dzhej
Заблокирован
19.08.2010, 15:37 #2
Цитата Сообщение от half-node Посмотреть сообщение
c2[j] = c1[j]; //возможно ли?
да
Цитата Сообщение от half-node Посмотреть сообщение
c3[x][y] = c1[j] // а так?
нет(с3[число от 0 до х-1][число от 0 до у-1])
выход за пределы диапазона массива
0
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 15:40  [ТС] #3
Подождите...Индексы это просто кол-во выделяемой памяти, правильно?
дело в том, что мне c1[52] нужно разделить на четыре человека.
Я, не мудурствуя лукаво, создал объект того же класса что и c1, только c3[4][13].
По сути, c3[0][0] = c1[0], я просто передаю данные объекта с1 в объект с3..а индексы, это уже дела массивов. Нет?)
0
Dzhej-Dzhej
Заблокирован
19.08.2010, 15:44 #4
правильно, но нужно писать
c3[j/4][j%4] = c1[j];
а то сишка такая штука, что может записать данные мимо массива в рядом стоящие переменные,
я когда-то долго пропарился из-за такой мелочи
1
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
19.08.2010, 15:50 #5
half-node, при правильной организации цикла отработают оба варианта. Правда, есть один тонкий момент - если в классе нет полей с динамически создающимися данными (требующими выделения памяти оператором new), то конструктор копирования, созданный компилятором по умолчанию, сам прекрасно справится. Судя по задаче - как-раз Ваш случай. В противном случае нужно будет перегрузить конструктор копирования и оператор присваивания...
0
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 15:53  [ТС] #6
Цитата Сообщение от easybudda Посмотреть сообщение
half-node, при правильной организации цикла отработают оба варианта. Правда, есть один тонкий момент - если в классе нет полей с динамически создающимися данными (требующими выделения памяти оператором new), то конструктор копирования, созданный компилятором по умолчанию, сам прекрасно справится. Судя по задаче - как-раз Ваш случай. В противном случае нужно будет перегрузить конструктор копирования и оператор присваивания...
Для меня, на данный момент, бОльшее из того, что вы сказали - Филькина грамота
"Это мы не проходили!"(с), скажем так. Мне нужно решить проблему зная только обычные массивы и классы.

В принципе, метод Dzhej-Dzhej работает. Спасибо!

п.с. Правда, опять выскакивает один лишний символ..(где ваши пресловутые переполнения массивов? )
0
ISergey
Maniac
Эксперт С++
1375 / 886 / 52
Регистрация: 02.01.2009
Сообщений: 2,661
Записей в блоге: 1
19.08.2010, 16:01 #7
Цитата Сообщение от half-node Посмотреть сообщение
мне c1[52] нужно разделить на четыре человека.
Я, не мудурствуя лукаво, создал объект того же класса что и c1, только c3[4][13].
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
 
class Foo{};
 
int main(){
    const int r = 4;
    const int c = 13;
    Foo a[r * c], b[r][c];
    //...
 
    for(int i = 0, it = 0; i < r; ++i)
        for(int j = 0; j < c; ++j){
            b[i][j] = a[it];
            ++it;
        }
    return 0;
}
1
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 16:07  [ТС] #8
Цитата Сообщение от ISergey Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
 
class Foo{};
 
int main(){
    const int r = 4;
    const int c = 13;
    Foo a[r * c], b[r][c];
    //...
 
    for(int i = 0, it = 0; i < r; ++i)
        for(int j = 0; j < c; ++j){
            b[i][j] = a[it];
            ++it;
        }
    return 0;
}
Кстати, да! Спасибо!
0
Dzhej-Dzhej
Заблокирован
19.08.2010, 16:08 #9
пресловутые переполнения массивов?
я когда-то карты писал в шестой вижуал-студии, так вот,
все работало хорошо, но раз в несколько раздачь вылетала непонятно откуда
взявшаяся карта и падала в левый верхний угол формы
я две недели с ума сходил
0
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 16:59  [ТС] #10
Ну, надеюсь, когда я изучу динамические массивы - такая беда будет обходить меня стороной
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
19.08.2010, 17:07 #11
half-node, Динамика - зло, хоть и неизбежное. Вектор (хотя тоже динамика, но не надо следить за выделением/очисткой памяти) лучше.
0
ISergey
19.08.2010, 18:03
  #12

Не по теме:

Lavroff, Да ладно.. прям там зло

0
ForEveR
19.08.2010, 18:15
  #13

Не по теме:

ISergey, Страуструп на это прямо намекает) И советует не юзать ни динамику, ни многомерные массивы. Выделение/очищение памяти - в большом кол-ве случаев приводит в ошибкам. Причем не всегда легким для распознавания. Если уметь пользоваться - другое дело) Но все равно, зачем?)

0
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 22:49  [ТС] #14
Цитата Сообщение от Lavroff Посмотреть сообщение
half-node, Динамика - зло, хоть и неизбежное. Вектор (хотя тоже динамика, но не надо следить за выделением/очисткой памяти) лучше.
Т.е. есть фиксированный размер массивов, динамический, и векторный? Правильно я понял?
0
neske
1501 / 868 / 84
Регистрация: 26.03.2010
Сообщений: 2,973
19.08.2010, 23:04 #15
half-node, не совсем.
Почитайте книги про стандартную библиотеку шаблонов, STL.
Это действительно интересно)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2010, 23:04
Привет! Вот еще темы с ответами:

Присваивание элементов двумерного массива другому двумерному массиву - C++
нужно элементы одного двумерного массива присвоить другому. Вот программа. Но для одномерного массива она работает, если соответственно...

Присваивание переменной одного значения из нескольких заданных - C++
Здравствуйте, у меня возник вопрос. Припустим есть цифры 12, 21, 68 и 0. Как присвоить переменной одно из этих значений(рандомно)? Подумал,...

Присваивание объекта класса ofstream - C++
Задача стоит в том, что нужно передать объект класса ofstream конструктору анонимного объекта (допустим, класса Store) и, как следствие,...

Присваивание объекта базового класса наследуемому - C++
Тут используется библиотека Qt, но вопрос не по ней, тему переносить не стоит! Суть в том, что я из главного класса вынес в отдельный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
19.08.2010, 23:04
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru