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

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

Войти
Регистрация
Восстановить пароль
 
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
#1

Где ошибка? Работа с класами - C++

24.09.2009, 17:02. Просмотров 790. Ответов 6
Метки нет (Все метки)

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
#include <iostream.h>
#include <assert.h>
 
using namespace std;
 
class complex
 {
 double re,im;
 
 public:
 complex(double=0,double=0);
 ~complex();
 complex operator+(complex&);
 complex operator-(complex&);
 complex operator*(complex&);
 complex operator/(complex&);
 complex operator^(unsigned);
 friend istream& operator>>(istream&,complex&);
 friend ostream& operator<<(ostream&,complex&);
 };
 
  complex::complex(double r, double i)
  {
  re=r;
  im=i;
  }
  
  complex::~complex(){}
 
  complex complex::operator+(complex& y)
  {
  return complex(re+y.re,im+y.im);
  }
 
  complex complex::operator-(complex& y)
  {
  return complex(re-y.re,im-y.im);
  }
  
  complex complex::operator*(complex& y)
  {
  return complex(re*y.re-im*y.im,re*y.im+im*y.re);
  }
 
  complex complex::operator/(complex& y)
  {
  double r1=re;
  double i1=im;
  double r2=y.re;
  double i2=y.im;
  return complex((r1*r2-i1*i2)/(r2*r2+i2*i2),(-r1*i2+i1*r2)/(r2*r2+i2*i2));
  }
 
  complex complex::operator^(unsigned n)
  {
  complex y(1,0);
  for(int i=1;i<=n; i++)
  y=y*(*this);
  return y;
  }
 
  istream& operator>>(istream& is,complex& x)
  {
  char c;
  cin>>c;
  assert(c=='(');
  cin>>x.re;
  cin>>c;
  assert(c==',');
  cin>>x.im;
  cin>>c;
  assert(c==')');
  return is;
  }
 
  ostream& operator<<(ostream& os,complex& x)
  {
  os<<'('<<x.re<<','<<x.im<<')'<<'\n';
  return os;
  }
 
  void main()
  {
  complex a(1,1);
  complex b(1,1);
  complex c(1,1);
  complex x;
  cout<<"->";
  cin>>x;
  cout<<"Result= "<<a*(x^2)+b*x+c<<'\n';
  system("pause");
  }
Добавлено через 5 минут
Выдает ошибку: [C++ Error] Unit1.cpp(90): E2093 'operator*' not implemented in type 'complex' for arguments of the same type
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2009, 17:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Где ошибка? Работа с класами (C++):

Работа с Класами в С++ - C++
Люди виручайте есть такое задание: Написати клас для ефективної роботи з рядками, дозволяючий форматувати і порівнювати рядки,...

Ошибка с класами - C++
Нашел себе книгу &quot;С++ за 21 день&quot; и там начал делать примеры. Но почему-то дойдя до классов ничего получается. Rect.h #include...

Ошибка при компиляции. Где ошибка? (Работа с классом) - C++
Уважаемые форумчане! При компиляции проекта возникает ошибка &quot; undefined reference to `MeterNZiF::MeterNZiF()' &quot; на 7 строку приложения. ...

Проблема с класами - C++
Вот пытаюсь описать клас(умова задачи в коментариях)но когда запускаю выбивает какуюту ошыбку типа необратимое исключения типов и тд...

Не могу разобраться с класами - C++
На днях приобрел книжку Г. Шилдт Там есть пример #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; class...

Не корректно работает программа с класами - C++
Привет Всем. У меня есть к Вам просьба. Я вот написал программу,но в ней редактирование и удаление данных из базы данных работает не...

6
R0mm
Псевдо программист
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
24.09.2009, 17:22 #2
Visual Studio 8.0 компилится без ошибок
0
Evg
Эксперт CАвтор FAQ
17941 / 6172 / 411
Регистрация: 30.03.2009
Сообщений: 16,942
Записей в блоге: 27
24.09.2009, 17:26 #3
Вот сокращённый пример

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class complex
 {
 double re,im;
 
 public:
 complex();
 complex operator*(complex&);
 complex operator^(unsigned);
 };
 
  int main()
  {
  complex x;
  x = x*(x^2);
  return 0;
  }
g++ ругается

t.cc: In function 'int main()':
t.cc:14: error: no match for 'operator*' in 'x * x. complex::operator^(2u)'
t.cc:7: note: candidates are: complex complex::operator*(complex&)
В чём причина - что-то не втыкаю
0
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
24.09.2009, 17:32  [ТС] #4
Я пробовал в C++ Builder 6 Тоже не компилится. В TurboC под ДОС компилится но не работает
0
Alchem
0 / 0 / 0
Регистрация: 23.09.2009
Сообщений: 10
24.09.2009, 18:02 #5
А косяк то презабавнейший. Прога будет компилироваться и работать если поменять во всех операторах аргументы на константные. Типа: complex operator+(const complex&);
ну и в операторе вывода в поток: friend ostream& operator<<(ostream&,const complex&);
Вот тогда у меня на mingw все скомпилилось и заработало.
0
Evg
Эксперт CАвтор FAQ
17941 / 6172 / 411
Регистрация: 30.03.2009
Сообщений: 16,942
Записей в блоге: 27
24.09.2009, 18:06 #6
Либо убрать все косвенности в параметрах

Фактически получается так, что есть временное значение (x^2) и мы не можем его нормально передать по косвенности в оператор (потому как без const запись означает, что по этой косвенности мы можем что-то записать). Добавление const или удаление косвенности снимает эту проблему

Одного не пойму - почему компилятор не мождет членораздельно ошибку вывести, чттобы без поллитры можно было понять?
0
ZVolodumur
49 / 49 / 3
Регистрация: 21.05.2009
Сообщений: 156
24.09.2009, 21:04  [ТС] #7
Спасибо всем за помощь.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2009, 21:04
Привет! Вот еще темы с ответами:

Очень непростая программа с класами! - C++
Всем привет! Нужно сделать класс Matrix (квадратная матрица) Действия: -=, *=. Класс должен иметь конструкторы, для создания объектов...

Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка) - C++
задан текст нужно вывести на экран количество слов где первая и последняя буквы одинаковы #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил) - C++
написать универсальный тип, который представляет точку на плоскости в координатах (х, у) и в полярных координатах. Написать функцию для...

Укажите где ошибка (ошибка во время выполнения программы) - C++
Здравствуйте, помогите пожалуйста найти ошибки в коде которые возникаю при выполнении программы Картинка с ошибкой внизу поста. Код: ...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
24.09.2009, 21:04
Ответ Создать тему
Опции темы

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