Dziedziczenie i metody klas

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?

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;

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ź ;)

0

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

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