Konstruktor z referencjami - ambiguos

0

mam sobie wzorzec:

template<typename T>
class MojaKlasa
{
public:
...
    PodKlasa<T> &getX()const
    {
        PodKlasa<T>& result = x ;  // tu mi wy wala błąd
        return result ;
    }
    bool operator==(MojaKlasa<T> &other)
    {
    ...
    }
private:
    PodKlasa<T> x ;
};

chcę, aby gettery zwracały referencje, nie wartości
dlaczego mi wywala błąd:

In file included from test/MojaKlasaTest.cpp:4:
src/MojaKlasa.h: In member function ‘PodKlasa<T>& MojaKlasa<T>::getX() const [with T = int]’:
test/MojaKlasaTest.cpp:31:   instantiated from here
src/MojaKlasa.h:44: error: invalid initialization of reference of type ‘PodKlasa<int>&’ from expression of type ‘const PodKlasa<int>’

?

0

dałem zły temat. miało być getter

0

invalid initialization of reference of type ‘PodKlasa<int>&’ from expression of type ‘const PodKlasa<int>’
Do nie-consta przypisujesz consta.

0

jak mogę temu szybko zaradzić? rzutowanie nie działa

0

o_O Proponuje zacząć od nauki programowania. Zwracaj const referencje, albo usuń const za metodą. MYŚL! const za deklaracją metody oznacza że ta metoda nie spowoduje zmiany stanu obiektu. Ale skoro chcesz zwrócic referencję to stan obiektu w wyniku działania tej metody moze ulegać zmianie! Musisz się zdecydować, albo metoda zmienia obiekt albo go nie zmienia. Od biedy mozesz oznaczyć to pole przez mutable, ale musisz wiedzieć co robisz...

0

dzięki.
twoje programistyczne porady mi nie pomogły od razu, ale "MYŚL!" zadziałało.

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