Przeciążenie operatora +, wypisanie wyniku

0

Dobry wieczór.
Mam sobie taki banalny kodzik (tak, artykuł MSM'a mnie zainspirował):

http://wklej.org/id/768351/

Gdy w main() zawołam sobie

    Vector3 a(1,2,3);
    Vector3 b(4,5,6);
    Vector3 c = a+b;
    std::cout << c ;

to wszystko jest ok.
Ale jeśli spróbuję zrobić w ten sposób:

std::cout << a+b 

to wynikiem jest błąd no match for 'operator<<' in 'std::cout << a.Vector3::operator+(((const Vector3&)((const Vector3*)(& b))))'

Mogę prosić Was o wytknięcie błędu i wskazówki dlaczego się tak dzieje i jak temu zaradzić?
(Kompilator MinGW 4.4, IDE - QtCreator, system - Windows7)

1

Może byś pokazał kod operatora + i <<. Szklaną kulę zostawiłem w domu.

0

Trzecia linijka posta, link http://wklej.org/id/768351/
Wiem, że na forum cierpi się na niedobór szklanych kul i umiejętności wróżenia z fusów - toteż kod jest.
Chyba, że chodzi Ci o coś innego?

2

Ehh, nie zauważyłem ;)
CL sobie radzi, ale GCC potrzebuje w tym wypadku, żeby argument Wektor w operatorze << był const.

Problemem tu może być fakt, że w operatorze << ten tymczasowy obiekt Wektor zwrócony przez operator + może już nie istnieć.

0

//Post zmodyfikowany.
Działa dobrze, dziękuję za pomoc.

0

Hmm, dziwne, może masz coś zwalone z kodowaniem znaków i strumień wywala się na polskim znaku(zapewne tam miało być "Naciśnij dowolny klawisz").
Jak użyjesz std::wcout to też się krzaczy?

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