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

Перегрузка операций << и >> - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удаление и вставка элементов массива http://www.cyberforum.ru/cpp-beginners/thread512139.html
Дан массив размера N и целое число K (1 ≤ K ≤ N). Перед элементом массива с порядковым номером K вставить новый элемент с нулевым значением.
C++ Во всех последовательностях положительных чисел изменить порядок элементов на противоположный Помогите с данным заданием Во всех последовательностях положительных чисел изменить порядок элементов на противоположный Размер массива 100 Диапазон значений -50 - 50 Начало программы должно быть такое #include<iostream> http://www.cyberforum.ru/cpp-beginners/thread512124.html
Удаление нечетных чисел из массива C++
Дан целочисленный массив размера N. Удалить из массива все нечетные числа и вывести размер полученного массива и его содержимое.
Структуры [C++] C++
Почему новый файл пуст? Что у меня не так? Вот код, прога без ошибок, всё компилится #include<iomanip.h> #include<fstream.h> #include<iostream.h> #include<conio.h> #include<stdlib.h> ifstream Fin; ofstream Fout;
C++ Ошибки - ссылка на неразрешенный внешний символ http://www.cyberforum.ru/cpp-beginners/thread512104.html
Тема-разработка собственных функций, а условие -найти кратчайшее расстояние между точкой и функцией y=15log(x)-x...на промежутке Xmin:H:Xmax, координаты точки и интервал вводятся, минимум не может быть отрицательным, это учитывается при проверке. Помогите пожалуйста разобраться с ошибками: Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl vych(double &,double &)"...
C++ Небольшая Сортировка! Відомість використання машинного часу на обчислювальному центрі: № з/п Кафедра Використання машиного часу (год) Відхилення від плана по плану фактично в часах в% 1 K P F O1=P-F O2=O1*100/P 2 ... подробнее

Показать сообщение отдельно
kapitan-kuljok
0 / 0 / 0
Регистрация: 01.02.2009
Сообщений: 44
04.03.2012, 16:02     Перегрузка операций << и >>
Всем добрый день.. У меня такая проблема, не получается перегрузить операторы << и >> для своего класса, делаю вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class CMPLX
{
    public://здесь находятся методы класса (функции)
        CMPLX(); //конструктор класса по умолчанию
        CMPLX (float real, float image); //конструктор класса с входными параметрами
        CMPLX operator--(int number); //декремент модуля
        CMPLX operator+ (CMPLX number); //сложение
        friend ostream &operator << (ostream& , CMPLX &);
        friend istream &operator >> (istream& , CMPLX &);
        void Print(); // печать
        ~CMPLX();
    private: //здесь находятся поля (переменные)
        float re;
        float im;
};
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
#include "stdafx.h"
#include <iostream>
using namespace std;
#include "cmplx.h"
 
 
CMPLX::CMPLX()
{
    re = 0;
    im = 0;
}
 
CMPLX::CMPLX(float real, float image)
{
    re = real;
    im = image;
}
 
 
 CMPLX CMPLX::operator + (CMPLX number)
{
    return CMPLX(re + number.re, im + number.im);
}
 
    
void CMPLX::Print()
{
   std::cout<<re<<"+i"<<im<<endl;
}
 
CMPLX CMPLX::operator -- (int number)
{
    float modul,Sin,Cos;
    modul=sqrt(re*re+im*im);
    Sin=im/modul;
    Cos=re/modul;
    modul--;
    re=modul*Cos;
    im=modul*Sin;
    return CMPLX(re,im);
}
 
 ostream &operator << (ostream& ostr, CMPLX &v)
 {
     ostr<<"Вещественная часть:"<<v.re<<endl;
     ostr<<"Мнимая часть:"<<v.im<<endl;
     return (ostr);
 }
 
 istream &operator >> (istream& ostr , CMPLX &v)
 {
     ostr>>"Вещественная часть:">>v.re;
     ostr>>"Мнимая часть:">>v.im;
     return (ostr);
 }
 
CMPLX::~CMPLX()
{}
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include "cmplx.h"//здесь находится заголовок  твоего класса
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"rus");
    float re = 0;
    float im = 0;
    cout<<"Введите вещественную часть превого комплексного числа: \n";
    cin>>re;
    cout<<"Введите мнимую часть первого комплексного числа: \n";
    cin>>im;
    if(im>0)
    cout<<"\nПервое число: "<<re<<"+i"<<im<<endl;
    else
        cout<<"\nПервое число: "<<re<<"+i("<<im<<")"<<endl;
    
    CMPLX number1(re,im);  //вызываем конструктор объекта CMPLX и передаем параметры re и im
 
    cout<<"\nВведите вещественную часть второго комплексного числа: \n";
    cin>>re;
    cout<<"Введите мнимую часть второго комплексного числа: \n";
    cin>>im;
    if(im>0)
    cout<<"\nВторое число: "<<re<<"+i"<<im<<endl;
    else
        cout<<"\nВторое число: "<<re<<"+i("<<im<<")"<<endl;
    
    CMPLX number2 (re,im);
    cout<<"\nПроизведем сложение\n"; //произведем сложение
    cout<<"Полученное комплексное число: \n"; //полученное комплексное число
    CMPLX result; //вызываем конструктор по умолчанию.
    result = number1 + number2;//производим сложение комплексных чисел.
    result.Print();
    cout<<"Декремент модуля: \n";
    result--;
    result.Print();
    cout<<result;
 
    //CMPLX a(1, 1);
 
    getch();
    return 0;
    
}
Вот список ошибок, которые выдаёт компилятор:
Код
Ошибка	3	error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	8
Ошибка	5	error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	8
Ошибка	9	error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	9
Ошибка	11	error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	9
Ошибка	12	error C2805: бинарный "operator >>" имеет слишком мало параметров	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	9
Ошибка	6	error C2805: бинарный "operator <<" имеет слишком мало параметров	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	8
Ошибка	13	error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "CMPLX" (или приемлемое преобразование отсутствует)	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\lab5.cpp	45
Ошибка	14	error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" (или приемлемое преобразование отсутствует)	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.cpp	52
Ошибка	15	error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" (или приемлемое преобразование отсутствует)	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.cpp	53
Ошибка	2	error C2433: ostream: "friend" не разрешается для объявлений данных	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	8
Ошибка	8	error C2433: istream: "friend" не разрешается для объявлений данных	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	9
Ошибка	1	error C2143: синтаксическая ошибка: отсутствие ";" перед "&"	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	8
Ошибка	7	error C2143: синтаксическая ошибка: отсутствие ";" перед "&"	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	9
Ошибка	4	error C2061: синтаксическая ошибка: идентификатор "ostream"	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	8
Ошибка	10	error C2061: синтаксическая ошибка: идентификатор "istream"	c:\documents and settings\jojo\мои документы\учёба\ооп\лабы мои\lab1\lab1\cmplx.h	9
Работаю в Visual Studio 2010

Помогите пожалуйста!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru