Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 2
1

Как перегрузить оператор = внутри класса, чтобы присвоить ему объект другого класса

12.01.2021, 10:02. Показов 856. Ответов 2

Author24 — интернет-сервис помощи студентам
Есть 2 класса, класс House и класс Phone, нужно присвоить объект класса Phone объекту класса House
В коде непосредственно класса House я пытался реализовать, но компилятор выдает следующие ошибки:
Ошибка C2061 синтаксическая ошибка: идентификатор "Phone"
Ошибка C2805 бинарный "operator =" имеет слишком мало параметров
Ошибка C2333 House::operator =: ошибка в объявлении функции; пропуск основного текста функции

Класс House
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class House
{
public:
    House()
    {
        adress = "";
        floor = "0";
        rooms = "0";
        square = 0;
    }
    House(string a, string f, string r, int s)
    {
        adress = a;
        floor = f;
        rooms = r;
        square = s;
    }
    House(const House& copy) :adress(copy.adress), floor(copy.floor), rooms(copy.rooms), square(copy.square) {}
    friend ostream& operator<<(ostream& os, const House& data)
    {
        os << "Адресс дома: " << data.adress << endl;
        os << "Колличество этажей и комнат соответственно: " << data.floor << " , " << data.rooms << endl;
        os << "Площадь: " << data.square << " метров квадратных" << endl;
        return os;
    }
    friend istream& operator>>(istream& in, House& data)
    {
        cout << "Адресс: ";   in >> data.adress;
        cout << "Кол-во комнат и этажей: "; in >> data.rooms >> data.floor;
        cout << "Площадь: "; in >> data.square;
        return in;
    }
    House& operator=(const House& data)
    {
        if (this == &data)  return *this;
        adress = data.adress;
        rooms = data.rooms;
        floor = data.floor;
        square = data.square;
    }
    void operator=(Phone& data)               // перегрузка оператора присвоения(на которую ругается компилятор)
    {
        adress = data.getAdress();
        floor = data.getFIO();
        rooms = data.getNbr();
        square = data.getAmount();
    }
private:
    string adress;
    string floor;
    string rooms;
    int square;
};
Класс Phone
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class Phone
{
public:
    Phone()
    {
        adress = "-";
        fio = "-";
        phone = "+7*********";
        amount = 0;
    }
    Phone(const Phone& copy) :adress(copy.adress), fio(copy.fio), phone(copy.phone), amount(copy.amount) {}
    Phone(string f, string a, string n, double am)
    {
        adress = a;
        fio = f;
        phone = n;
        amount = am;
    }
    string getAdress() {
        return adress;
    }string getFIO() {
        return fio;
    }string getNbr() {
        return phone;
    }
    double getAmount() {
        return amount;
    }
    friend ostream& operator<<(ostream& os, const Phone& data)
    {
        os << "ФИО клиента: " << data.fio << endl;
        os << "Адресс: " << data.adress << " , номер телефона " << data.phone << endl;
        os << "Оплата: " << data.amount << " рублей" << endl;
        return os;
    }
    friend istream& operator>>(istream& in, Phone& data)
    {
        cout << "Адресс: ";   in >> data.adress;
        cout << "ФИО: "; in >> data.fio;
        cout << "Номер телефона: ";    in >> data.phone;
        cout << "Оплата: ";   in >> data.amount;
        return in;
    }
    Phone& operator=(const Phone& data)
    {
        if (this == &data)   return *this;
        adress = data.adress;
        fio = data.fio;
        phone = data.phone;
        amount = data.amount;
        return *this;
    }
private:
    string adress;
    string fio;
    string phone;
    double amount;
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2021, 10:02
Ответы с готовыми решениями:

Свойству класса присвоить объект другого класса
Добрый день форумчане. Подскажите, пожалуйста. Свойствам класса можно при описании присваивать...

Как связать сигнал одного класса со слотом другого класса, содержащего указатель на объект этого класса?
Подскажите, пожалуйста, как связать сигнал одного класса со слотом другого класса, содержащего...

Выделить в памяти объект класса string и присвоить ему значение
Здравствуйте! Я доучился :-( Дошел до полиморфизма и сдал проект и не знаю как работать с...

Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса
Всем привет. Есть условие задачи: Дан базовый класс Base у которого есть метод my_name, метод...

2
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
12.01.2021, 13:05 2
Цитата Сообщение от GoaTu Посмотреть сообщение
нужно присвоить объект класса Phone объекту класса House
если объекты не связаны отношением наследования (а это, похоже, именно так), то действие вряд ли возможно.
1
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 2
12.01.2021, 13:13  [ТС] 3
Если рассматривать задачу в целом то там получается есть шаблонный класс где в качестве одного из параметров выступают два данных класса и нужно сделать операцию типа:
C++
1
2
3
NameClassShablona <NameClass1> obj1; 
NameClassShablona <NameClass2> obj2; 
ob1=obj2;
0
12.01.2021, 13:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2021, 13:13
Помогаю со студенческими работами здесь

Наследование: Как мне определить любой из методов заданного класса внутри другого класса?
Добрый день, подскажите пожалуйста, что я делаю не так Есть файл Container.h в котором храню...

Как сделать, чтобы функция класса могла работать с обьектами другого класса
есть класс к примеру class One и класс к примеру class Two нужно чтобы элемент функция класса...

Как перегрузить оператор для своего класса?
У меня есть класс, .h class Vertex { public: ~Vertex(); Vertex(); double GetX(); double...

как сделать чтобы объект производного класса сам себя добавлял в список или массив указателей базового класса?
я хотел так, но программа просто падает void Student::add(Base** head) { cout &lt;&lt; &quot;I here&quot; &lt;&lt;...

Как правильно перегрузить оператор для шаблона класса
Имеется такой шаблон: template&lt;int Low = 0, int High = 1000&gt; class Diapazon { }; Внутри...

Почему объект производного класса не видит префиксный оператор из базового класса?
Короче создал я базовый класс с перегруженным префиксным оператором ++. Потом чтоб его...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru