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

[Obiektowe] Stwierdzenie którą z dziedziczących klas jest obiekt

VPS Starter Arubacloud
0 głosów
181 wizyt
pytanie zadane 2 sierpnia 2015 w C i C++ przez Grzyboo Nałogowiec (28,860 p.)
edycja 2 sierpnia 2015 przez Grzyboo

Tytuł niewymowny, bo ciężko mi to ująć sensownie. Korzystam z frameworka QT, mamy tam taką sytuację:

QLabel oraz QPlainTextEdit dziedziczą po QWidget. Mam wskaźnik do aktualnie wybranego widgetu, który może być albo labelem, albo tekstem (no i teoretycznie każdym innym widgetem, ale innych widgetów nie używam w programie).

 

QWidget* pSelectedWidget;

Ten wskaźnik przechowuje adres do widgetu QLabel, lub QPlainTextEdit, zależnie, bo zmienia się to w kodzie. Muszę teraz, zależnie od tego czy pSelectedWidget przechowuje label lub textedit wykonać inny kod. Jak to zrobić?

2 odpowiedzi

+2 głosów
odpowiedź 2 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)
wybrane 2 sierpnia 2015 przez Grzyboo
 
Najlepsza
#include <iostream>


using namespace std;

class mein
{
public:
    virtual ~mein() {}
};

class kat : public mein
{
};

class kot : public mein
{
};

int main()
{
    mein * wsk = new kot();
    kot * d = dynamic_cast<kot*>(wsk);
    if(d != NULL)
    {
        cout << "Klasa kot!";
    }else{
        cout << "To nie klasa kot!";
    }

    return 0;
}

Uruchom i przetestuj, zobacz co się wyświetli a następnie zmień z "kot" na "kat" po "new".

I dostaniesz inną informację.

komentarz 2 sierpnia 2015 przez Rogargol Pasjonat (16,600 p.)
Jak kolega wyżej, proponuje dynamic_cast, to bedzie najbardziej eleganckie rozwiazanie.
komentarz 2 sierpnia 2015 przez Grzyboo Nałogowiec (28,860 p.)
O, super, dokładnie o to chodziło.
+1 głos
odpowiedź 2 sierpnia 2015 przez Patrycjerz Mędrzec (192,340 p.)

Zrób zmienną boolowską i przypisuj jej wartości true i false, gdy przypisujesz obiekty do wskaźnika.

Potem tylko jeden if i po problemie wink

komentarz 2 sierpnia 2015 przez Grzyboo Nałogowiec (28,860 p.)
Rzeczywiście, to niegłupie! :P

Zapewne tak zrobię, ale czy tak potężny mechanizm jak obiektówka nie przewiduje takiej sytuacji?

Podobne pytania

0 głosów
0 odpowiedzi 89 wizyt
0 głosów
2 odpowiedzi 250 wizyt
pytanie zadane 23 września 2023 w C# przez sisOOO Obywatel (1,370 p.)
0 głosów
2 odpowiedzi 238 wizyt
pytanie zadane 24 lutego 2023 w C i C++ przez Jerzy Użytkownik (870 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...