Przesłonięcie wskaźnika z klasy podstawowej

0

Witam. Mam następujący problem:

Posiadam zdefiniowaną klasę Macierz, jest w niej wskaźnik na wskaźnik na int

int **macierz; 

Dalej stworzyłem funkcję wyświetlającą jakiś wiersz tej macierzy void Macierz::WyswietlWiersz(int x)
{
x--; // konwersja na zapis indeksowy
if (x >= W || x < 0) { cout << "\nNieprawidlowy wiersz!"; return; }
for (int j = 0; j < K; j++) cout << macierz[x][j] << " ";
cout << endl;
}


Następnie stworzyłem próbną klasę MacierzX, która jest pochodną od klasy Macierz, ze wskaźnikiem na char 
```cpp
 char** macierz;

W funkcji głów zdefiniowałem zmienną m1 typu MacierzX i zainicjalizowałem jakimiś znakami typu char. Gdy teraz próbuję wywołać metodę m1.WyswietlWiersz(x); próbuje mi się ona dostać do tej metody, ale przez wskaźnik int**.

Czy istnieje jakiś sposób, żeby

char **macierz

przesłonił int **macierz

, tak żeby dla <code class="cpp"> cout << macierz[x][j]

wykonywana była metoda ze wskaźnikiem char z klasy pochodnej? Czy muszę zdefiniować przesłonić wszystkie metody w klasie pochodnej (co wydaje mi się trochę absurdalne, zważywszy na fakt, że chodzi tu tylko o odniesienie się do właściwego wskaźnika)?

Proszę o pomoc.

0

Poczytaj na temat wzorców (template).

0

Niestety nie wyrobię się z ogarnięciem tego do jutra, więc potrzebuję szybszego rozwiązania :) (aczkolwiek poczytam o tym jak tylko będę miał trochę więcej czasu)

0

No to masz problem bo w takiej sytuacji stosuje się typy generyczne a nie dziedzicznie i już.

0

Ok :) Tak właśnie kombinowałem w tę stronę, ale niestety brak mi wiedzy. Spróbuję znaleźć inne rozwiązanie/dziedziczenie.

0

Ale po co?

template<typename T>
class Macierz
{
    T** macierz; 
// itd
};

zamieniasz wszędzie w kodzie swoje "int" oznaczające komórkę macierzy na "T" a potem robisz

Macierz<int> macierz_intow;
Macierz<char> macierz_charow;

i voila

0

Skorzystam na przyszłość ;) Okazało się, że moje zadanie nie wymaga aż takiej ogólności :) Ale dziękuję serdecznie, faktycznie jest to bardzo dobre rozwiązanie.

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