• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zwracanie referencji

0 głosów
325 wizyt
pytanie zadane 21 kwietnia 2016 w C i C++ przez L33TT12 Gaduła (3,950 p.)

#include <iostream>
using namespace std;
int &dodaj(int&,int&);
int main()
{
    int a = 5;
    int b = 5;
    cout<< dodaj(dodaj(a,b),b);
}
int &dodaj(int& a,int& b)
{
   return a+b;
}

 

Dlaczego ten jakże prosty przykład nie chce się skompilować? Gdzie znajduje się błąd?

 

komentarz 21 kwietnia 2016 przez draghan VIP (106,230 p.)
1. Podaj komunikat błędu. Kompilator powinien Ci powiedzieć, dlaczego nie chce przepuścić kodu.

2. Popraw tagi.
komentarz 21 kwietnia 2016 przez L33TT12 Gaduła (3,950 p.)
invalid initialization of non-const reference of type 'int&' from an rvalue of type 'int'

1 odpowiedź

+2 głosów
odpowiedź 21 kwietnia 2016 przez draghan VIP (106,230 p.)

Chcesz zwracać referencję do obiektu, nie tworząc obiektu tylko próbując zwracać adres wartości tymczasowej. Tak się nie da.

Potrzebujesz utworzyć obiekt w pamięci, żeby móc zwrócić referencję do niego. Zwróć też uwagę na to, ile czasu ów obiekt żyje po zwróceniu takiej referencji.

Zazwyczaj zabieg zwracania referencji robi się dla metod klasy, zwracając referencję do obiektu, na rzecz którego dana metoda zostaje wywołana.

Nie wiem, po co Ci zwracanie referencji do typów prostych. Powinieneś to robić przez wartość.

Nie wiem, jakie są obecne trendy, ale takie działanie było kiepskim pomysłem:

Foo &function()
{
    Foo bar;
   // ...
    return bar; // po wyjściu poza zakres "function", obiekt "bar" powinien zostać zniszczony... GCC rzucał ostrzeżeniem, ale zezwalał na takie kwiatki.
}

Bardzo proszę mnie poprawić, jeśli się mylę.

Podobne pytania

0 głosów
2 odpowiedzi 2,470 wizyt
0 głosów
1 odpowiedź 3,648 wizyt
pytanie zadane 26 listopada 2020 w C i C++ przez mik53r Nowicjusz (150 p.)
0 głosów
1 odpowiedź 1,396 wizyt
pytanie zadane 25 kwietnia 2020 w C i C++ przez Anahan89 Obywatel (1,320 p.)

93,777 zapytań

142,736 odpowiedzi

323,388 komentarzy

63,381 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...