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

ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
yulla
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59
14.01.2013, 15:46     ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору #1
заголовочный файл



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
#include <iostream>
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
 
class Complex // класс компелексных чисел
{
   double re, im; // целая и мнимая части
   
// создаем конструкторы   
public:
   
   Complex() {};
   
   Complex (double r) // конструктор по умолчанию
   {
      re = r; 
      im = 0;
   }
   
   Complex (double r, double i) // конструктор по умолчанию
   {
      re = r; 
      im = i;
   } 
   
   Complex (Complex &c) // конструктор копирования
   {
      re = c.re; 
      im = c.im;
   }
   
   ~Complex() {}
   
   float abs() // Модуль комплексного числа
   {
      return sqrt(re * re - im * im);
   }     
 
   void print(Complex &c)
   {
       if(c.im>0) printf("%f + %f i\n",c.re,c.im);
       else printf("%f  %f i\n",c.re,c.im);
 
   }
 
 
   Complex & operator = (Complex &c) // перегрузка оператора присваивания
   {
      re = c.re;
      im = c.im;
 
      return (*this);
   }
 
   Complex Complex::operator + (Complex &c) // перегрузка оператора сложения
   {
      Complex temp;
 
      temp.re = re + c.re;
      temp.im = im + c.re;
 
      return temp;
   }
 
   Complex Complex::operator - (Complex &c) // перегрузка оператора вычитания
   {
      Complex temp;
 
      temp.re = re - c.re;
      temp.im = im - c.re;
    
      return temp;
   }
 
   Complex Complex::operator * (Complex &c) // перегрузка оператора умножения
   {
      Complex temp;
 
      temp.re = re*c.re;
      temp.im = re*c.im;
 
      return temp;
   }
 
    
 
   Complex Complex::operator / (Complex &c) // перегрузка оператора деления
   {
      Complex temp;
 
      double r = c.re * c.re + c.im * c.im;
      temp.re = (re * c.re + im * c.im) / r;
      temp.re = (im * c.re - re * c.im) / r;
 
      return temp;
   }   
 
   friend ostream &operator<<(ostream &, Complex &); // перегрузка оператора <<
   friend istream &operator>>(istream &, Complex &); // перегрузка оператора >>
 
};
 
ostream &operator<<(ostream &out, Complex &c)
{
   if (c.im>0)
    
    out << "" << c.re << " + "<<c.im<<" i" <<"\n";
   else out << "" << c.re << " "<<c.im<<" i" <<"\n";
   
   return out;
}
 
istream &operator>>(istream &in, Complex &c)
{
   in >> c.re >> c.im;
   
   return in;
}
файл исходного кода

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
#include "complex.h"
#include "iostream"
using namespace std;
 
int main()
{
    Complex u(5,2); 
    Complex v(3,-3);
    Complex x1(5);
    Complex x2(2.3);
    Complex x3(3);
    Complex x4(1);
    Complex x5(1.5);
    Complex x6(-5,2);
    
    cout << u << " " << v << endl;
 
    // вывод числа двумя функциями
    u.print(u);
    cout<<u<<endl;
    
    cout << x6 << endl; 
    cout << x4 - u << endl; 
    cout << u + v << endl;
    
    cout << u - v << endl;
    
    cout << u * v << endl;
    
    cout << x1*u+x2*v << endl;   //5u + 2.3v
     
    cout << (x3+u*v)/(u+(x4-v)) << endl;   //(3+uv)/(u+(x4-v))
 
    cout << x4/(u+x5*v) << endl;   //(u+1.5v)-1
    
    u = v;
    
    cout << u << " = " << v << endl;
    
   int i;
    cin>>i;
 
cout << "true  && false: " <<  ( u && v )   << endl;
cout << "true  || false: " << ( u || v )   << endl;
cout << "!true: " << r = ( ! u ) << endl<< "!false: "<<  ( ! v ) << endl;
        return 0;
}
я пытаюсь вычислить логические значения выражений, но выдаются ошибки

Код
1>c:\users\1\documents\visual studio 2010\projects\орпа\орпа\dfgbhnjk.cpp(43): error C2676: бинарный "&&": "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
1>c:\users\1\documents\visual studio 2010\projects\орпа\орпа\dfgbhnjk.cpp(44): error C2676: бинарный "||": "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
1>c:\users\1\documents\visual studio 2010\projects\орпа\орпа\dfgbhnjk.cpp(45): error C2065: r: необъявленный идентификатор
1>c:\users\1\documents\visual studio 2010\projects\орпа\орпа\dfgbhnjk.cpp(45): error C2675: унарный "!": "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
1>c:\users\1\documents\visual studio 2010\projects\орпа\орпа\dfgbhnjk.cpp(45): error C2675: унарный "!": "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2013, 15:46     ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
Посмотрите здесь:

C++ Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой или одним из знаков "+", "-", "*".
error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::basic_istream<_Elem,_Traits>" C++
C++ Исправить ошибку:error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream"
C++ Error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream"
Error C2678: бинарный "<<": не найден оператор, принимающий левый операнд типа "std::ifstream" C++
C++ Ошибка: не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
Warning C4244: инициализация: преобразование "__int64" в "int", возможна потеря данных C++
Бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" C++
бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному C++
Не компилируется, ошибки: "отсутствует оператор, соответствующий этим операндам" C++
C2678 бинарный ">>": не найден оператор, принимающий левый операнд типа "std::ostream" C++
C++ Error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
14.01.2013, 20:01     ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору #2
Цитата Сообщение от yulla Посмотреть сообщение
я пытаюсь вычислить логические значения выражений, но выдаются ошибки
И правильно выдаются, для того чтобы работать с логическими операторами их надо сначала перегрузить.
yulla
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59
14.01.2013, 23:37  [ТС]     ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору #3
Цитата Сообщение от David Sylva Посмотреть сообщение
И правильно выдаются, для того чтобы работать с логическими операторами их надо сначала перегрузить.
например, так?
C++ (Qt)
1
2
3
4
5
6
7
   Complex & operator && (Complex &c) 
   {
      re = u;
      im = v;
 
      return (*this);
   }
Yandex
Объявления
14.01.2013, 23:37     ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
Ответ Создать тему
Опции темы

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