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 mam źle? C++


Rekomendowane odpowiedzi

Opublikowano

Uczę się polimorfizmu i mam taki kod na program który obliczy pole koła i kwadratu:
 

#include <iostream>

using namespace std;

class Ksztalt
{
public:
    virtual void oblicz_pole()=0; // czysta funkcja wirtualna
};

class Kolo :public Ksztalt
{
    float r;
public:
    Kolo(float x)
    {
        r=x;
    }
    virtual void oblicz_pole()
    {
        cout<<"Pole kola: "<.14*r*r<<endl;
    }
};

class Kwadrat :public Ksztalt
{
    float a;
public:
    Kwadrat(float x)
    {
        a=x;
    }
    virtual void oblicz_pole()
    {
        cout<<"Pole kwadratu: "<<a*a<<endl;
    }
};

int main()
{
    Kolo k(1);
    Kolo kw(2);

    Ksztalt *wsk;

    wsk = &k;
    wsk -> oblicz_pole();

    wsk = &kw;
    wsk -> oblicz_pole();

    return 0;
}

I wszytko jest okej poza tym że pole kwadratu (a*a) powinno dać wynik 4 bo za a przyjąłem 2.

Niestety w konsoli mam taki wynik 

 

mCsxXJQ.png

Cześć...

Opublikowano

Twój obiekt w klasie main to 2 razy Kolo.

 

int main()
{
Kolo k(1);
Kolo kw(2);

powinienes zmienic jedno z nich na Kwadrat

<>

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...