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

Реализовать перегрузку оператора ввода в классе-наследнике

30.08.2016, 14:28. Показов 623. Ответов 1

Author24 — интернет-сервис помощи студентам
вопрос, наверное, глупый. Есть класс, содержащий массив (размер задется пользователем) и наследник (4 элемента). Можно ли вызвать конструктор внутри метода?

вот я перегружаю операцию ">>", вводить ввожу, а объекты это уже не меняет.

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#pragma once
#include <iostream>
#include <cstdlib>
 
class Base
{
private:
    int* Arr;
    int N;
public:
    Base() {
        Arr = NULL;
        N = 0;
    }
 
    Base(int arr[], int n) {
        N = n;
        Arr = new int[N];
        for (int i(0); i < N; i++)
            Arr[i] = arr[i];
 
    }
 
    friend std::ostream& operator<<(std::ostream& os, Base& b) {
 
        for (int i(0); i < b.N; i++)
            os << b.Arr[i] << " ";
        return os;
    }
    friend std::istream& operator>>(std::istream& is, Base& b) {
        std::cout << "Размер: ";
        while (1) {
            if (is >> b.N)
                break;
            std::cin.clear();
            while (std::cin.get() != '\n');
            std::cin.get();
        }
 
        b.Arr = new int[b.N];
        //заполнение массива
        for (int i(0); i < b.N; i++)
            is >> b.Arr[i];
 
        return is;
    }
 
    ~Base() {
        delete[] Arr;
    }
};
 
class Sub : public Base
{
public:
    Sub() : Base() {}
    Sub(int ar[]) : Base(ar, 4) {}
    friend std::istream& operator >> (std::istream& is, Sub& b) {
 
        int ar[4];
 
        //заполнение массива
        for (int i(0); i < 4; i++)
            is >> ar[i];
 
        Sub::Sub(ar);
 
        return is;
    }
 
 
 
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2016, 14:28
Ответы с готовыми решениями:

не получается осуществить перегрузку оператора ввода-вывода
хочу передать перечисление (enum class Colors) в функцию to_string по ссылке, но при этом при...

Реализовать перегрузку оператора индексации
Здравствуйте! Очень нужна помощь, помогите сделать перегрузку оператора индексации. #include...

Реализовать перегрузку метода: - статического; - экземплярного (реализовать в классе)
Метод замены в массиве заданного элемента на указанное число, удаления заданного элемента.

Реализовать перегрузку оператора сложения пользовательского класса Ellipse для сложения двух полуосей эллипса
Нужно дополнить прогу конструктором\деструктором и перегруженой операцией, чтоб &quot;+&quot; делал сложение...

1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
30.08.2016, 14:34 2
DannyConnor, оператор >> это обычная функция класса. Вы хотите вызвать конструктор для уже созданного объекта. На лицо ошибка ХУ. А почему бы вам просто не завести метод инициализации данными - вы бы его в конструкторе/операторе присвоения/операторе>> бы использовали....
1
30.08.2016, 14:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2016, 14:34
Помогаю со студенческими работами здесь

Объявить в классе-наследнике указатель, указывающий туда же, куда указывает указатель в классе-родителе
Здравствуйте. Имеется базовый класс MainWindow: #ifndef MAINWINDOW_H #define MAINWINDOW_H...

Перегрузка оператора в наследнике
Доброго времени суток. Интересует вопрос на счет перегрузки оператора в классе. Обьяснить трудно -...

Перегрузка метода в классе-наследнике
...доброго времени суток, уважаемые форумчане!... ...Возник вопрос: не могу сообразить как...

Перегрузка операций в классе наследнике
всем привет товарищи программисты, есть вопрос. делал как то перегрузку операций, но делал ее...


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

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