Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
La Morte
0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 27
1

Перегрузка операторов

30.11.2017, 23:58. Просмотров 84. Ответов 1
Метки нет (Все метки)

Доброго времени суток
Код выдает ошибку
Не могу понять как исправить
cannot convert 'TRangecheck' to 'float' in assignment
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
#include <Windows.h>
#include <clocale>
#include<cstdlib>
using namespace std;
 
class TRangecheck {
      private:
 
              int size;
              float first;
              float second;
      public:
            float b;
             float *element;
             TRangecheck();
             TRangecheck(int);
             TRangecheck(const TRangecheck&);
             TRangecheck(float,float);
             bool Init(float, float);
             bool RangeCheck(float);
             void Read();
             void Display();
             friend ostream& operator << (ostream &, const TRangecheck&);
             friend istream& operator >> (istream &, TRangecheck&);
             TRangecheck operator = (TRangecheck S);
 
 
};
 
TRangecheck TRangecheck::operator=(TRangecheck S)
{
    b = S.b;
    return *this;
}
 
istream& operator >> (istream &in, TRangecheck& my)
{
    return in >> my.b;
}
 
ostream& operator << (ostream &out, const TRangecheck& my)
{
    return out << my.b;
}
 
TRangecheck::TRangecheck(int N)
 
{
 
    element=new float[N];
 
    size=N;
 
}
 
TRangecheck::TRangecheck()
{
    first = 1;
    second = 10;
}
 
TRangecheck::TRangecheck(float _first, float _second)
{
    first = _first;
    second = _second;
}
 
TRangecheck::TRangecheck(const TRangecheck& obj)
{
    element = new float[obj.size];
    for(int i = 0; i < obj.size; i++){
        element[i] = obj.element[i];
    }
    size = obj.size;
}
 
bool TRangecheck::Init(float f, float s)
{
    if(f < s)
    {
        first = f;
        second = s;
        return true;
    }
    cout << "Неверные данные \n";
    return false;
}
 
void TRangecheck::Read()
{
    float f, s;
    cout << "Задайте границы: " << endl;
    cin >> f;
    cout << "\n";
    cin >> s;
    Init(f,s);
 
}
 
bool TRangecheck::RangeCheck(float a)
{
     if(a >= first && a < second)
         return true;
     return false;
}
 
void TRangecheck::Display()
{
    cout << "[" << first << ";" << second << "]\n";
}
 
 
 
 
int main()
{
    setlocale(LC_ALL, "Rus");
    TRangecheck range;
    TRangecheck v(1);
    range.Read();
    range.Display();
 
    TRangecheck m;
    //cin >> m;
    //cout << m;
    float a;
    cout << "Задайте число: ";
    cin >> m;
    v.element[0] = m;
    TRangecheck x = v;
    if(range.RangeCheck(x.element[0]))
    {
        cout << "Число " << x.element[0] << " принадлежит диапазону ";
        range.Display();
    }
    else
    {
            cout << "Число " << x.element[0] << " не принадлежит диапазону";
            range.Display();
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2017, 23:58
Ответы с готовыми решениями:

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. ...

Перегрузка операторов
Здравствуйте! Пытаюсь понять синтаксис перегрузки операторов: Вот код: ...

Перегрузка операторов
В общем учу эту тему и ввожу код один в один как в уроке, но в уроке он...

Перегрузка операторов
написал программу. проверил. вроде все правильно. но не работает. программа...

Перегрузка операторов С++
Здравствуйте, недавно начал изучать С++, до этого старался решать проблемы...

1
Mournful Max
Велосипедист...
346 / 213 / 74
Регистрация: 15.12.2015
Сообщений: 784
Завершенные тесты: 1
01.12.2017, 02:58 2
Цитата Сообщение от La Morte Посмотреть сообщение
C++
1
v.element[0] = m;  // 130 строка
Сущности типа float пытаетесь присвоить значение сущности типа TRangecheck.
Компилятор сказал что-то похожее:
Цитата Сообщение от La Morte Посмотреть сообщение
cannot convert 'TRangecheck' to 'float' in assignment
---- ----

Цитата Сообщение от La Morte Посмотреть сообщение
Не могу понять как исправить
1. Пересмотреть код. Возможно, Вы ошиблись с именем объекта.
2. Сделать перегрузку оператора приведения типа для класса TRangecheck:
C++
1
2
3
4
5
6
7
8
9
class TRangecheck {
  ...
public:
  ...
  operator float()
  {
    return <some_float_var>;
  }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2017, 02:58

Перегрузка операторов
Столкнулся с проблемой при написании лабораторной по перегрузке операторов....

Перегрузка операторов
Почему-то выводятся нули в qDebug(): #include &lt;QCoreApplication&gt; #include...

Перегрузка операторов
Привет, не подскажите, почему у меня тут не работает правильно += оператор. ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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