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

Перезагрузка operator == - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как узнать, сколько памяти занимает тот или иной элемент программы? http://www.cyberforum.ru/cpp-beginners/thread382725.html
Товарищи, подскажите, пожалуйста, ответы на следующие вопросы: 1) Есть какие-либо средства определения, сколько памяти жрёт программа в целом и ее составные части (сколько требуется под код, под данные)? 2) Сколько памяти расходуется под стандартные контейнеры? Например под вектор? 3) Если используются несколько однотипных векторов (например vector<int>), то они полностью дублируются, или код...
C++ WinAPI + AD Доброе время суток! подскажите как с помощью WinAPI на Си проверить установлен ли Active Directory в системе? Заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread382715.html
пустой ввод C++
Допустим читаю я из файла, но его нету, вывожу я ошибку, далее выкидывает. Но как сделать, что бы после ошибки нажать ентер и тока тада выкинуло бы. if (!input) cout << "Ошибка"; break;
CopyFile() C++
Здравствуйте, помогите мне пожалуйста, если можно, ответить на следующий вопрос. #include<iostream> #include"windows.h" using namespace std; int main() { char filename; cout<<"Vvedite put k failu"<<endl;
C++ Классы, задача с классами http://www.cyberforum.ru/cpp-beginners/thread382694.html
Всем доброго времени суток. Помогите пожалуйста разобраться с заданием. Я даже не знаю с чего начать, т.к. классов толком и не знаю. Читал всякий материал, но в них мало информации про объекты, поэтому у меня трудности с написанием кода. Прошу написать "скелет" программы, или скинуть какой то учебный материал по классам, в котором доступно было бы все написано, или что бы ктото написал хоть...
C++ Очереди Cpp привет всем, помогите реализовать программку на С++ Смоделировать очередь(на базе статического массива), в которой реализован такой механизм изъятия элемента из очереди: начало очереди всегда находится в первом элементе массива; при изъятии одного элемента из очереди, все остальные элементы перемещаются на одну позицию ближе к началу массива. После обработки всей заданной входной... подробнее

Показать сообщение отдельно
Scorpion93
2 / 2 / 0
Регистрация: 31.10.2010
Сообщений: 120

Перезагрузка operator == - C++

13.11.2011, 02:40. Просмотров 1736. Ответов 45
Метки (Все метки)

Тренируюсь и пишу клас комплексных чисел. Проблема с перезагнрузкой оператора сравнения да и другие перезагрузки не хотят использоваться. Как решить эту проблему? Ведь желательно передавать константные ссылки? Но к ним уже стает проблематично использовать перезагрузки..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <math.h>
 
using namespace std;
class MyComplex
{
private:
    double a;
    double b;
public:
    MyComplex(void);
    MyComplex(double,double);
    void ConsoleInput();
    void ConsoleOutput();
    string Output();
    bool operator==(double);
    MyComplex operator +(const MyComplex &);
    MyComplex operator -(const MyComplex &);
    MyComplex operator *(const MyComplex &);
    MyComplex operator /(const MyComplex &);    
    ~MyComplex(void);
};
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
#include "StdAfx.h"
#include "MyComplex.h"
 
 
MyComplex::MyComplex(void): a(0),b(0)
{   
     
}
MyComplex::~MyComplex(void)
{
}
MyComplex::MyComplex(double x,double y):a(x),b(y)
{
}
void MyComplex::ConsoleInput()
{
    
    cout<<"Real:";
    cin>>a;
    cout<<"Imagine:";
    cin>>b; 
}
void MyComplex::ConsoleOutput()
{
    if (b<0) cout<<a<<"-i"<<b;
    if (b==0) cout<<a;
    if (b>0) cout<<a<<"+i"<<b;
    cout<<endl; 
}
string MyComplex::Output()
{
    string s;
    return s;
}
MyComplex MyComplex::operator +(const MyComplex & r)
{
    return MyComplex(a+r.a,b+r.b);
}
MyComplex MyComplex::operator -(const MyComplex & r)
{
    return MyComplex(a-r.a,b-r.b);
}
MyComplex MyComplex::operator *(const MyComplex & r)
{
    return MyComplex(a*r.a-b*r.b,b*r.a+a*r.b);
}
MyComplex MyComplex::operator /(const MyComplex & r)
{
        r==0.0; // тут ошибка: Ошибка   1   error C2678: бинарный "==": не найден оператор, принимающий левый операнд типа "const MyComplex" (или приемлемое преобразование отсутствует)    d:\test\test\mycomplex.cpp  49  1   test
        if (r.a==0 && r.b==0) throw 1; 
        return MyComplex((a*r.a+b*r.b)/(pow(r.a,2)+pow(r.b,2)),(b*r.a-a*r.b)/(pow(r.a,2)+pow(r.b,2)));
}
bool MyComplex::operator==(double zero)
{
    return a==0 && b==0;
}
Добавлено через 2 минуты
И еще вопрос к try catch: Посоветуйте как правильно отловить ошибку с делением на 0.
C++
1
2
3
4
5
6
7
8
9
try
    {
            c=a/b;
            c.ConsoleOutput();
    }
    catch (int a)
    {
        cout<<"Error! Division by zero!"<<endl;
}
вот в мейне присутствует такой код, он работает. Так делать нормально?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru