Konstruktory i wskaźniki

0

Witam mam pewien drobny problem.

Zrobiłem taką przykładową hierarchie klas:

 class A
{
	int x;
	int y;
	
	int* wsk;
public:
	A() { x = 0; y = 0; wsk = NULL; }
	//reszta metod
};

class B
{
	A pole;
public:
	B() { pole = A(); }
};

class C : public B
{
	B *plansza;

public:
	C(){ plansza = new B; }
};

I teraz z tego co widzę po odpaleniu tego, wartość wskaźnika z klasy bazowej jest niezainicjowana poprawnie. Czy powinienem gdzieś dodatkowo inicjować ten wskaźnik ?

0

W sumie, to w klasie bazowej nie masz żadnego wskaźnika.
W czym dokładnie jest problem?

0

Może źle sie wyraziłem. Chce aby ten wskaźnik w klasie bazowej przekazywał mi adres do jakiegoś miejsca w pamięci. I w momencie jak utworze sobie coś takiego:

int main()

{
   C cos;

return 0;
}
 

bez żadnych dodatkowych parametrów to czy do tego wskaźnika zostanie przypisane NULL czy będą tam po prostu śmieci.

Mam podobny bardziej rozbudowany program i podobnym przypadku jak chce dostać wartość tego co jest pod wskaźnikiem to wywala mi że nie jest to zainicjowane czy coś takiego. Stąd moje pytanie czy konstruktory się tutaj wywołają po kolei i robią tak jak jest napisane czy trzeba jakąś doodatkową instrukcje, bo już zgłupiałem.
BTW jeśli tutaj jest ok wszystko to bedę szukał gdzieś indziej luki jakiejś.

0

Wstaw cout do konstruktorów to się dowiesz co się wywoła.

1

A możesz powiedzieć co ty próbujesz zrobić? Bo ja widzę że dziedziczysz z klasy B i jednocześnie masz pole typu B w klasie C to zapala mi sie lampka "WTF".
Poza tym masz tu raptem 3 konstruktory i tylko jeden jest poprawny :D
pole = A(); nie ma sensu bo konstruktor nic nie zwraca. Zresztą ten obiekt utworzy sie automatycznie i nic nie musisz z nim robić skoro chcesz i tak wołać domyślny konstruktor
plansza = new B; -> plansza = new B();

0

Racja to co tam wyżej napisałem to bez sensu jest ;D Na tą chwile problem rozwiązałem. Chyba za długo przy kompie siedze i juz nie myśle ;D
Ale dzięki za pomoc i trafne uwagi :)

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