Wpis z mikrobloga

#programowanie #cpp co robię źle jeżeli g++ krzyczy że nie wie jak rzutować obiekt na referencję?

np.

klasa.h:92:21: note: no known conversion for argument 1 from 'klasa' to 'klasa&'


czyżbym musiał robić nowy konstruktor umożliwiający inicjalizację przez wartość?

a co najdziwniejsze - na VS wszystko ładnie chodzi...
  • 14
@ntskj: VS jest bardzo "tolerancyjny": ilość głupot które toleruje jest niesamowita, np takie coś w deklaracji klasy:

class Foo

{

void Foo::bar();

};

Zmienne tymczasowe (np ta suma), możesz przyjmować jako parametr const T&, a nie jako T& - zmiana wartości tego parametru nie będzie mieć efektu na zewnątrz. Jedyne rozwiązanie to zmiana na const T&, albo przez wartość (tylko po co?).
@losiul: a jest jakiś sposób na ograniczenie tolerancji VS, aby później nie mieć takich niespodzianek przy przechodzeniu na inny kompilator? \Wall, czy jest jeszcze może coś innego?
@ntskj: Nie ma z tego co wiem. g++ jest dość ścisły, ma też parę swoich myków i znacznie lepiej kodować po g++ i przenosić na VS niż odwrotnie. VS łyka kod g++ bez większych problemów.