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

Błąd dziedziczenia

Object Storage Arubacloud
0 głosów
186 wizyt
pytanie zadane 18 sierpnia 2015 w C i C++ przez patryk16 Obywatel (1,080 p.)
Mam problem chcem użyć dziedziczenia ale wyskakuje mi błąd.

Wrog::w is not accessible.

nie wiem czemu przecież ta klassa to dziedziczy!!

 

//---------------------------------------------------------------------------

#include <Graphics.hpp>

#include "Unit1.h"
#include "Block.h"
//---------------------------------------------------------------------------
 class Wrog
{
  TImage *w;
 int live;
 int damage;

};
class Dekton
: public Wrog
{

Dekton(int x,int y,int l,TForm1 *cont)
{
  w=new TImage(cont);
  w->Parent=cont;
  w->Left=x;
  w->Top=y;
  w->AutoSize=true;
  w->Picture->LoadFromFile("imag/Chrząszcz.jpg");
  live=l;
  damage=2;
  w->Show();

}

};

3 odpowiedzi

+1 głos
odpowiedź 18 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)

Ponieważ zmienne są prywatne.

Ustaw na public albo na protected w Wrog

http://wklej.org/hash/f23566778e5/

public - każdy ma dostęp

protected - tylko klasy dziedziczące mają dostęp i klasa która posiada.

private - tylko klasa która posiada ma do niej dostęp.

0 głosów
odpowiedź 18 sierpnia 2015 przez Mieszko I Stary wyjadacz (10,980 p.)
edycja 19 sierpnia 2015 przez Mieszko I
Klasa Wrog jest prywatna. Zmień dostęp do klasy Wrog na public, lub zmień na protected (i w kalsie Wrog i przy definicji dziedziczenia).

Pozdrawiam.
komentarz 18 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)
Jesteś pewny że na "private"?
komentarz 19 sierpnia 2015 przez Mieszko I Stary wyjadacz (10,980 p.)
sorry błąd. Chodziło mi o public.
0 głosów
odpowiedź 19 sierpnia 2015 przez Radfler VIP (101,030 p.)

Też dodam coś od siebie ;) :

Twoja klasa Wrog wygląda tak:

class Wrog {
    TImage *w;
    int live;
    int damage;
};

Jak dobrze widać nie użyłeś specyfikatora dostępu (public/private/protected), co oznacza że wszystkie elementy są prywatne (przez domniemanie), czyli dostępne tylko i wyłącznie dla składowych tej klasy i przyjaciół. Możesz to zmienić na dwa sposoby:

- używając struktury zamiast klasy:

struct Wrog {
    TImage *w;
    int live;
    int damage;
};

- dając specyfikator dostępu public albo protected:

class Wrog {
public:
    TImage *w;
    int live;
    int damage;
};

Podobne pytania

0 głosów
3 odpowiedzi 589 wizyt
0 głosów
1 odpowiedź 531 wizyt
pytanie zadane 3 lipca 2015 w C i C++ przez Wiciorny Ekspert (269,710 p.)
0 głosów
0 odpowiedzi 189 wizyt

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...