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

Перегрузка. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программирование с использованием строковых данных. http://www.cyberforum.ru/cpp-beginners/thread516467.html
Привет ВСЕМ!!! Уважаемые модераторы и форумчане помогите пожалуйста в решении следующей задачки... Составить таблицу слов данного текста, начинающихся с буквы "А", с указанием числа повторений каждого слова. ... буду БЛАГОДАРЕН!!!! =)
C++ Неправильная перегрузка - нужно перегрузить операцию - c=a-b выводит объект с вида -808080880,что не так? #include "stdafx.h" #include <iostream> #include <conio.h> #include <string.h> #include <iostream> #include <iomanip> #include <assert.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread516464.html
переведите с Паскаля на си++ пожалуйста! C++
Дано имя файла и целое число N (0 < N < 27). Создать текстовый файл с указанным именем и записать в него N строк длины N; строка с номером K (K = 1, …, N) должна содержать K начальных прописных (то есть заглавных) латинских букв, дополненных справа символами «*» (звездочка). Например, для N = 4 файл должен содержать строки «A***», «AB**», «ABC*», «ABCD». Program Text3; const Add =...
задача на массивы C++
Дан массив размера N и целое число K (1 ≤ K ≤ N). Перед элементом массива с порядковым номером K вставить новый элемент с нулевым значением.
C++ Не могу разобраться. http://www.cyberforum.ru/cpp-beginners/thread516430.html
Никак не могу разобраться в заданной части кода программы (писала не я). Помогите, пожалуйста, если вас не затруднит. #include <dir.h>//ДЛЯ ОПРЕДЕЛЕНИЯ mkdir(ИМЯ ПАПКИ) #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <alloc.h> #include <string.h> #include <iostream.h> int ndig(char x)
C++ Лифт Дейтелов Кто во время изучения С++ по книге Дейтелов моделировал лифт, сколько времени заняло, думаю забить и учить дальше... подробнее

Показать сообщение отдельно
Uinslou
Старичок :)
 Аватар для Uinslou
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
11.03.2012, 22:12     Перегрузка.
Всем привет. Вот, попросили помочь, кому не сложно.

Сам код:

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
#ifndef OTREZOK_H
#define OTREZOK_H
 
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;
class Otrezok
{friend ostream &operator<<(ostream &, const Otrezok &); //перегрузка операций передачи в поток{
friend istream &operator>>(istream &, Otrezok &); // и извлечения из потока,в качестве друзей класса
public:
bool operator==( Otrezok &);
bool operator!=(const Otrezok &right)const
{
return!(*this==right);
};
float operator+(Otrezok &);
Otrezok() ;
Otrezok(float ,float ,float,float );
 
void setFunk(float,float ,float ,float );
 
float Dlinni();
 
void sr_Dlinni( Otrezok);
 
//void Peresechenie();
 
float VecM() ;
float VecN();
 
void print_ne_per() const;
void otr_peresechenie(Otrezok otr2);
 
void print_per() const;
void input();
void print_bol();
void print_men();
void print_ravn();
float get_fun_xk11();
float get_fun_xk12();
float get_fun_yk11();
float get_fun_yk12();
private:
 
float xk11,yk11,xk12,yk12;
};
 
#endif // OTREZOK_H
Интерфейс:

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
121
122
123
124
125
126
127
128
129
130
131
132
133
#include "otrezok.h"
 
#include <iostream>
#include <math.h>
 
using std::cout;
using std::cin;
using std::ostream;
using std::istream;
 
ostream &operator<<(ostream &output, const Otrezok &o1)
{
output<<o1.Dlinni();
return output; //позволяет передавать обьекты cout<<x<<y;
}
istream &operator>>(istream &input, Otrezok &o1)
{ cout<<"Vvedite x1";
input>>o1.xk11;
cout<<"Vvedite y1";
input>>o1.yk11;
cout<<"Vvedite x2";
input>>o1.xk12;
cout<<"Vvedite y2";
input>>o1.yk12;
return input; //cin<<x<<y;
}
bool Otrezok::operator==( Otrezok &o1)
{
if((*this).Dlinni()==o1.Dlinni())
{
return true;
}
else
return false;
}
float Otrezok::operator+(Otrezok &o1)
{
return((*this).Dlinni()+o1.Dlinni());
}
Otrezok::Otrezok()
 
{
xk11=0; //конструктор по умолчанию
yk11=0;
xk12=0;
yk12=0;
}
Otrezok::Otrezok( float x11, float y11, float x12, float y12)
{
setFunk(x11,y11,x12,y12); //устанавливаем параметры явным образом через сет-функцию
}
 
void Otrezok::setFunk(float x11, float y11, float x12, float y12)
{
xk11=x11;
yk11=y11;
xk12=x12;
yk12=y12;
}
float Otrezok::Dlinni()
{float otrezok;
otrezok=sqrt(pow((xk12-xk11),2)+pow((yk12-yk11),2)); //вычисляем длинну заданого отрезка
return otrezok; }
void Otrezok::sr_Dlinni( Otrezok otr2)
{
if ( (*this).Dlinni()>otr2.Dlinni() ) //функция сравнения длинн отрезков,передавая в качестве параметров
{print_bol();} //объект класса отрезок
if( (*this).Dlinni()==otr2.Dlinni())
{print_ravn();}
if( (*this).Dlinni()<otr2.Dlinni())
{print_men();}
 
}
float Otrezok::VecM()
{float m1;
m1=(xk12-xk11);//вычисление направляющих веторов отрезка
return m1;}
float Otrezok::VecN()
{float n1;
n1=(yk12-yk11);
return n1;
}
void Otrezok::otr_peresechenie(Otrezok otr2)
{
 
if(((*this).VecM()/otr2.VecM())==((*this).VecN()/otr2.VecN())) //сравнение направляющих векторов
{print_ne_per(); //если равны вызываем констант функцию,что печатает на экран.
 
}
 
else
print_per(); //иначе вызываем констант функцию,что печатает на экран,информацию,о том что отрезки не пересекаются.
 
}
void Otrezok::print_ne_per()const
{
cout<<"Otrezki ne peresekauts9"<<"\n";
}
void Otrezok::print_per() const
{
cout<<"Otrezki peresekauts9"<<"\n";
}
float Otrezok::get_fun_xk11()
{return xk11;
}
float Otrezok::get_fun_xk12()
{return xk12;
}
float Otrezok::get_fun_yk11()
{return yk11;
}
float Otrezok::get_fun_yk12()
{return yk12;
}
 
void Otrezok::print_bol()
{cout<< "Otrezok1 bolshe Otrezka2"<<"\n";
}
void Otrezok::print_ravn()
{ cout<<"Otrezki ravni"<<"\n";
}
void Otrezok::print_men()
{cout<<"Otrezok1 menshe Otrezka2"<<"\n";
}
void Otrezok::input()
{ float x11,x12,y11,y12;
cout<<"Vvedite x11 dl9 otrezka"<<"\t";
cin>>x11;
cout<<"Vvedite y11 dl9 otrezka"<<"\t";
cin>>y11;
cout<<"Vvedite x12 dl9 otrezka"<<"\t";
cin>>x12;
cout<<&q
Как мне объяснили, само задание компилируется отлично, но как только добавляют извлечение и передачу в поток (перегрузка операций), всё, выдает кучу ошибок.

Вот, собственно, сами ошибки:

C:\Users\Any\Desktop\otrezok.h|11|error: ISO C++ forbids declaration of 'ostream' with no type|
C:\Users\Any\Desktop\otrezok.h|11|error: 'ostream' is neither function nor member function; cannot be declared friend|
C:\Users\Any\Desktop\otrezok.h|11|error: expected ';' before '&' token|

Для истрим такие же.

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