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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
yulla
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 59
#1

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

14.01.2013, 15:46. Просмотров 1459. Ответов 2
Метки нет (Все метки)

заголовочный файл



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 ==========
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2013, 15:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору (C++):

Ошибка: не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору - C++
Здравствуйте! Не могу понять, почему так нельзя делать (Ошибка: не определяет этот оператор или преобразование к типу приемлемо к...

бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному - C++
бинарный &quot;++&quot;: &quot;Counter&quot; не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору #include &lt;iostream&gt; ...

Ошибка C2676 бинарный "[": "matr" не определяет этот оператор - C++
Компилятор возмущается:( Выдает ошибки: отсутствует оператор &quot;&quot;, соответствующий этим операндам Ошибка C2676 бинарный &quot;#include...

Error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое - C++
эмулятор работы банкомата Например #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;time.h&gt; #include...

Не компилируется, ошибки: "отсутствует оператор, соответствующий этим операндам" - C++
Помогите исправить ошибку, данные проект создавался в среде eclipse при переносе на VS 2010 стал выдавать ошибки при компиляции. Исправьте...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

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

Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел - C++
Вставить пробел после каждого символа &quot;.&quot; &quot;,&quot; &quot;!&quot; или &quot;?&quot;, если за этими символами не следует пробел (т. е. следует любой символ, кроме...

C2678 бинарный ">>": не найден оператор, принимающий левый операнд типа "std::ostream" - C++
Код: #include &lt;iostream&gt; #include &lt;memory&gt; #include &lt;typeinfo&gt; #include &lt;ctime&gt; #include &lt;windows.h&gt; #include &lt;ostream&gt; ...

Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой или одним из знаков "+", "-", "*". - C++
Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой или одним из знаков &quot;+&quot;, &quot;-&quot;, &quot;*&quot;. Групой...

Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" или "Воскресенье" - C++
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: &quot;Рабочий день&quot;,&quot;Суббота&quot; или...


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

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

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