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

Enkapsulacja - zastosowanie

0 głosów
793 wizyt
pytanie zadane 11 grudnia 2016 w C i C++ przez Suiko Początkujący (350 p.)

Witam, otóż mam taki "mały" kłopot wynikający z niemal absolutnego braku umiejętności stosowania poprawnej enkapsulacji kodu.

Plik main.cpp:

#include <iostream>
#include "hefi.h"

using namespace std;

int main()
{

  Moje ja;
  NieMoje::zmienhp(ja);
  
 return 0;
}

Plik hefi.h:

#include <iostream>

using namespace std;

class Moje
{
private:
    int hp=30;
public:
    int whathp();
};

class NieMoje
{
public:
    static void zmienhp(class Moje& ja);
};

Plik hefi.cpp::

#include <iostream>
#include "hefi.h"
using namespace std;

int Moje::whathp()
{
    return hp;
}

void NieMoje::zmienhp(class Moje& ja)
{
    ja.whathp() -=10;
}

Błąd:  error: lvalue required as left operand of assignment

Wiem że rozwiązanie jest pewnie trywialnie proste ale jednak nie mam pomysłu co z tym zrobić. Pozdrawiam :)

 

1 odpowiedź

+2 głosów
odpowiedź 11 grudnia 2016 przez unknown Nałogowiec (39,560 p.)
wybrane 5 sierpnia 2017 przez Suiko
 
Najlepsza

Funkcja whathp zwraca wartość tymczasową czyli rvalue a operator = po lewej stronie wymaga lvalue. Niech funkcja whathp zwraca referncje:

int& whathp();
int& Moje::whathp()
{
    return hp;
}

 

komentarz 11 grudnia 2016 przez Suiko Początkujący (350 p.)
Nie wiedziałem że można w taki sposób ustawiać referencję, wielkie dzięki! Zdecydowanie pomogło, błąd zniknął. Pozdrawiam :)

Podobne pytania

0 głosów
1 odpowiedź 470 wizyt
pytanie zadane 25 kwietnia 2021 w Bezpieczeństwo, hacking przez MrMoon Użytkownik (960 p.)
0 głosów
1 odpowiedź 272 wizyt
pytanie zadane 29 listopada 2020 w C i C++ przez jakis111 Nowicjusz (210 p.)
0 głosów
1 odpowiedź 251 wizyt

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,323 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.

...