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

Enkapsulacja - zastosowanie

VPS Starter Arubacloud
0 głosów
546 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ź 323 wizyt
pytanie zadane 25 kwietnia 2021 w Bezpieczeństwo, hacking przez MrMoon Użytkownik (960 p.)
0 głosów
1 odpowiedź 136 wizyt
pytanie zadane 29 listopada 2020 w C i C++ przez jakis111 Nowicjusz (210 p.)
0 głosów
1 odpowiedź 113 wizyt

92,781 zapytań

141,708 odpowiedzi

320,588 komentarzy

62,114 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...