Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Co to jest rzutowanie?


Rekomendowane odpowiedzi

Opublikowano

Rzutowanie jest konwersją z jednego typu do drugiego. Przykładowo z int'a do float'a. Również w dziedziczeniu, gdy castujemy z typu klasy bazowej, do wyższej klasy, która dziedziczy klasę bazową.

Przykładowo:

class BaseClass
{
...
};

class ExampleClass : public BaseClass
{
...
};

class ExampleClass2 : public BaseClass
{
...
};

I wtedy powiedzmy mamy array, który przechowuje typ klasy bazowej:

std::vector<BaseClass*> klasy;

I dodajemy do niego powiedzmy:

klasy.push_back(new ExampleClass());
klasy.push_back(new ExampleClass2());

Gdy chcemy wyciąnąć jakiś objekt, jednak o tym wyższym typie, a nie bazowym, stosujemy casty:

ExampleClass *objekt = dynamic_cast<ExampleClass*>(klasy.at(...));
ExampleClass2 *objekt2 = dynamic_cast<ExampleClass2*>(klasy.at(...));

W C++ można castować w stylu C, przykładowo:

ExampleClass *objekt = (ExampleClass*) klasy.at(...);

int liczba1 = 10;
float liczba2 = (int) liczba1;

Jednak odradzam z wielu powodów, lepiej używać static_cast, dynamic_cast, const_cast i reinterpret_cast.

 

Ciekawy artykuł o rzutowaniu znajdziesz również tutaj: http://4programmers.net/C/Rzutowanie

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...