Dziedziczenie i funkcje wirtualne

Odpowiedz Nowy wątek
2014-12-30 19:57
0
 
//main.cpp
#include "A.h"
using namespace std;
    void main()
    {
        A test;
        A* test2;
        test2 = &test;
        int x = test2->Render();
    }
//B.h
#pragma once
#include "A.h"
class B: A
{
public:
    virtual int Render()
    {
        return 20;
    }
};
//A.h
class A
{
public:
    virtual int Render()
    {
        return 10;
    }
};

W takiej konfiguracji wykonuje mi się cały czas metoda z klasy A, chciałbym żeby wykonała się metoda z B, i chcę ją wywołać wskaźnikiem który pokazuje na klasę A.

Pozostało 580 znaków

2014-12-30 20:11
cpsc
1
kolarz3 napisał(a):
</code></pre>
</blockquote>
<pre><code>    A test;

Zamień na:
```cpp

        B test;

W Twoim kodzie, obiekt na który wskazujesz jest klasy A a NIE jest klasy B, więc funkcja wirtualna wykona się tak jak w klasie A.

Pozostało 580 znaków

2014-12-30 20:12
0
A* ptr ;
B test2 ;
 
ptr = &test2 ;
int x = ptr -> Render() ;

Pozostało 580 znaków

2014-12-30 20:17
cpsc
0

No klasa B musi dziedziczyć publicznie z klasy A :)

Pozostało 580 znaków

2014-12-30 20:29
0

Nie o to mi chodzi, chciałbym zrobić jakąś klasę A, i ona ma jakąś metodę render która jest zdarzeniem i teraz chciałbym mieć klasę B która by dziedziczyła po A i podpisywała tą metodę z klasy A. I jakby to zdarzenie się wydarzyło to żeby kod się wywołał w tej metodzie klasy która dziedziczy a nie w klasie bazowej.

Pozostało 580 znaków

2014-12-30 21:09
Biały Mleczarz
0
kolarz3 napisał(a):

chciałbym mieć klasę B która by dziedziczyła po A i podpisywała tą metodę z klasy A.

Co masz na myśli pisząc "podpisywała"?

Pozostało 580 znaków

2014-12-30 21:13
0

By wykonała się metoda o tej samej nazwie z klasy która dziedziczy

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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