Dziedziczenie i metody klas

Odpowiedz Nowy wątek
asbbccc
2012-11-28 19:28
asbbccc
0

Czy jeżeli mamy taką sytuację:


class A
{
protected:
 int A;
 float B;
public:
  A();
  GetInt();
  GetFloat();
  SetInt(int New);
  SetFloat(float New);
};

class B : public A
{
protected:
  bool C;
public:
  B();
  GetBool();
  SetBool(bool New);
};

int main()
{

A * Test = new B();
std::cout << Test-GetBool();
};

Muszę utworzyc wskaźnik do B i przerzutować wskaźnik Test na TestB i wtedy się odwołać do metody GetBool() czy mogę zrobić to za pomocą Test?
A w funkcji która przyjmowała by wskaźnik na A a by potrzebowała operować na B, też muszę rzutować wskaźnik czy nie?

Pozostało 580 znaków

2012-11-28 19:31

Rejestracja: 14 lat temu

Ostatnio: 3 minuty temu

0

std::cout << Test->GetBool(); //ale to nie zadziała
std::cout << ((B*)Test)->GetBool(); // tak zadziała
delete Test; // tu nie wykona się destruktor B - destruktor A musi być virtualny
return 0;


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2012-11-28 19:32

Pozostało 580 znaków

asbbccc
2012-11-28 19:36
asbbccc
0

Aha, czyli w funkcji/metodzie też muszę użyć tak jak w tym wypadku ((B*)Test)->GetBool() , czy tak? Jeżeli tak, to temat do zamknięcia. Thx za odpowiedź ;)

Pozostało 580 znaków

2012-11-28 19:53

Rejestracja: 14 lat temu

Ostatnio: 3 minuty temu

0

w funkcji - tak, w metodzie klasy B - nie, w metodzie innych klas - tak.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0