overloading operator>>

0

Witam,

#include <iostream>
#include <math.h>
using namespace std;

class Velocity
{
private:
	double value;
public:
	Velocity():value(0){};
	Velocity(double value):value(value){};
	double gamma()
	{
		return 1/sqrt(1-pow(value,2));
	}
	double getValue() const
	{
		return value;
	}
};
Velocity operator+(const Velocity &first, const Velocity &second)
{
	return first.getValue()+second.getValue();
}
istream &operator>>(istream &stream,const Velocity &velocity)
{
	return stream>>velocity.getValue();
}
ostream &operator<<(ostream &stream,const Velocity &velocity)
{
	return stream<<velocity.getValue();
}

int main(int, char**)
{
	Velocity first(2),second(3);
	Velocity final;
	final=first+second;
	//cin>>first; What's wrong!?
	cout<<final;
	cin.get();
	return 0;
} 

Chciałbym napisać operator >> wczytujący pędkosc ze strumienia typu istream. W sposób taki jaki to napisałem, wywołuje stack overflow. Operatory << i "+" działają bez zarzutu, tylko tutaj mam problem. Byłbym wdzięczny za wyjaśnienie bo chciałbym zrozumieć co robię źle.

0

Proszę wyjaśnij co robi Twoim zdaniem ten kod:

return stream>>velocity.getValue();

:-|

0

Do strumienia stream wczytuje velocity.getValue()

0
Ilidan18 napisał(a):
istream &operator>>(istream &stream,const Velocity &velocity)
{
	return stream>>velocity.getValue();
}

A gdzie setter? Po co to const?
To się nie ma prawa skompilować, więc skoro masz stack overflow, to najwyraźniej nie pokazujesz nam właściwego kodu.

0

Tak, ten const jest niepotrzebny, też na to już wpadłem. settera nie ustawiałem, bo to programik typowo do nauki, próbuje zrozumieć operatory. Jak zdejme const w argumencie funkcji to wtedy mam błąd;/
Jeżeli pole value zrobilbym jako publiczne i w metodzie dał:

 istream &operator>>(istream &stream,Velocity &velocity)
{
        return stream>>velocity.value;
}

To wtedy działa, Mógłby ktoś wytłumaczyć dlaczego?
i jak to zrobić, żeby wywołać:

return stream>>velocity.getValue();
0

Ok juz kumam, off-topic. Sorry za zawracanie głowy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1