Dziedziczenie i funkcje wirtualne

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.

1
kolarz3 napisał(a):
 

		A test;

Zamień na:

 

		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.

0
A* ptr ;
B test2 ;

ptr = &test2 ;
int x = ptr -> Render() ;
0

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

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.

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"?

0

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

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