Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2010, 19:29   #1
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию Отрезок - Перегрузка оператора <<

Написал программу по потокам с перезагрузкой оператора << по следующему заданию:
Цитата:
Название класса - прямая
Описание класса - Координаты начала и конца, конструктор по умолчанию с введением координат, метод вычисления длины, метод вычисления угла с осью ОХ, метод выведения данных (перегрузка операции <<)
Программа выдает следующие ошибки, помогите их исправить пожалуйста.
Цитата:
:\мои документы\visual studio 2008\projects\laba 2.3 c++\laba 2.3 c++\laba 2.3 c++.cpp(20) : error C2470: 'Straight::GetLength' : looks like a function definition, but there is no parameter list; skipping apparent body
d:\мои документы\visual studio 2008\projects\laba 2.3 c++\laba 2.3 c++\laba 2.3 c++.cpp(25) : error C2063: 'Straight::GetOX' : not a function
main.cpp
d:\мои документы\visual studio 2008\projects\laba 2.3 c++\laba 2.3 c++\main.cpp(11) : error C2601: 'operator <<' : local function definitions are illegal
d:\мои документы\visual studio 2008\projects\laba 2.3 c++\laba 2.3 c++\main.cpp(8): this line contains a '{' which has not yet been matched
d:\мои документы\visual studio 2008\projects\laba 2.3 c++\laba 2.3 c++\main.cpp(12) : error C2065: 'x1' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 c++\laba 2.3 c++\main.cpp(13) : error C2065: 'x2' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 c++\laba 2.3 c++\main.cpp(14) : error C2065: 'y1' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 c++\laba 2.3 c++\main.cpp(15) : error C2065: 'y2' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 c++\laba 2.3 c++\main.cpp(16) : error C2064: term does not evaluate to a function taking 0 arguments
d:\мои документы\visual studio 2008\projects\laba 2.3 c++\laba 2.3 c++\main.cpp(17) : error C2064: term does not evaluate to a function taking 0 arguments
Код программы:
Код:
//Straight.h
#include <iostream>
using namespace std;

class Straight
{
private:
	double x1;
	double x2;
	double y1;
	double y2;
public:
	Straight(double ax1, double ax2, double ay1, double ay2);
	~Straight();
	double GetLength;
	double GetOX;
	friend ostream &operator<<(ostream &stream, Straight obj);
};


//.cpp
#include "stdafx.h"
#include <iostream>
#include "Straight.h"
#include <math.h>

using namespace std;

Straight::Straight(double ax1, double ax2, double ay1, double ay2)
{
	x1 = ax1;
	x2 = ax2;
	y1 = ay1;
	y2 = ay2;
}

Straight::~Straight()
{}

double Straight::GetLength
{
	return sgrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1));
}

double Straight::GetOX()
{
	return atan((y2-y1)/(x2-x1));
}

//main.cpp
#include "stdafx.h"
#include <iostream>
#include "Straight.h"

using namespace std;

int main()
{
	Straight obj(2.3, 1.2, 3.4, 4.5);
	ostream &operator<<(ostream &stream, Straight obj)
	{
		stream <<"x1 :" << x1 << "\n";
		stream <<"x2 :" << x2 << "\n";
		stream <<"y1 :" << y1 << "\n";
		stream <<"y2 :" << y2 << "\n";
		stream <<"Dlina :" << obj.GetLength() << "\n";
		stream <<"OX :" << obj.GetOX() << "\n";
		return stream;
	}
	return 0;
}
ArniLand вне форума Ответить с цитированием
Старый 25.04.2010, 21:48   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
class Straight
{
private:
	double x1;
	double x2;
	double y1;
	double y2;
public:
	Straight(double ax1, double ax2, double ay1, double ay2);
	~Straight();
	double GetLength;
	double GetOX();
	friend ostream &operator<<(ostream &stream, Straight obj);
};
Код:
double Straight::GetLength()
{
	return sgrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1));
}
Код:
	ostream &operator<<(ostream &stream, Straight obj)
	{
		stream <<"x1 :" << obj.x1 << "\n";
		stream <<"x2 :" << obj.x2 << "\n";
		stream <<"y1 :" << obj.y1 << "\n";
		stream <<"y2 :" << obj.y2 << "\n";
		stream <<"Dlina :" << obj.GetLength() << "\n";
		stream <<"OX :" << obj.GetOX() << "\n";
		return stream;
	}
Кстати, это - объявление функции, а не ее вызов! (Объявление одной функции внутри другой???)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перегрузка оператора << z3rg Общие вопросы C/C++ 18 02.03.2010 02:58
перегрузка оператора [] в c++ terminadoor Общие вопросы C/C++ 3 21.01.2010 15:44
Перегрузка оператора + z3rg Общие вопросы C/C++ 1 22.03.2009 03:06
Перегрузка оператора + (С++) MjRed Помощь студентам 1 15.12.2008 18:57
Перегрузка оператора Crucian Общие вопросы C/C++ 2 22.10.2007 09:44