Zdravim,
trochu řešim operátor >> a stále mi to nějak nejde, operátor << byl v pohodě, ale tento nevim nějak.
Můžete mi prosím říct, kde mám chybu?
#include <iostream>
#include <vector>
using namespace std;
template <typename T>
class Test
{
public:
Test() : iVector() { }
void vypis()
{
for (unsigned int i = 0; i < iVector.size(); i++)
cout << iVector.at(i) << endl;
}
// toto mi funguje bez problemu
Test operator << (const T value)
{
iVector.push_back(value);
return *this;
}
// tady mam nekde chybu
// jendoduse potrebuju, aby to odebralo prvek a ten mi to vratilo pres funkci
// zde by fce ani nemusela mit parametr, ale je potreba 1
T operator >> (Test&)
{
T temp = iVector.at(0);
iVector.pop_back();
return temp;
}
private:
vector<T> iVector;
};
int main()
{
Test<int> test;
// prida 2 cisla
test << 23;
test << 11;
// zde potrebuju odebrat cislo a to ulozit do "value"
int value;
test >> value;
test.vypis();
return 0;
}
Díky :)
PS: v nadpise je chyba, jedná se o operátor >> nikoli << :(
no ono to neni nahoda ... pokud mas operator>>(& neco) ve tride: tak je to trida >> neco; a to co zustane jako vysledek po teto operaci je pak to co se vraci returnem! tj ani by to nemohlo fungovat pokud bys neudelal neco = trida >> dummy;