dynamiczna tabica wskaźników a słówko const

0

Hej, w pewnej klasie B mam przechowywać nieokreśloną ilość elementów klasy A(ilość tych elementów podaje się w konstruktorze klasy B). Napisałem coś takiego:

 
class A
{
	string nazwa;
public:
	A(string n)
	{
		nazwa=n;
	}
};
class B
{
	A** tablicaA;
public:
	B(int ile)
	{
		tablicaA = new A*[ile];
	}

	int dodaj(const A* obiektA) 
	{
		tablicaA[0] = obiektA;
	}
};

W klasie B chcę przechowywać konkretne obiekty a nie ich kopie dlatego używam tablicy wskaźników, parametr metody dodaj jest stały gdyż nie chcę by elementy uległy jakiejkolwiek zmianie, chcę mieć możliwość manipulowania tablicaA, dodawania i usuwania obiektów dlatego nie może być ona stała, a kompilator odmawia mi przypisania wskaźnika na jakiś obiekt do tablicy. Jeśli parametr metody dodaj nie musiałby być stały to problemu by nie było, ale co zrobić by jednak był stały? Proszę o pomoc.

0
const A** tablicaA;
...

tablicaA = new const A*[ile];
0

Dzięki, działa, chociaż nie do końca rozumiem dlaczego. Skoro samą tablicę opatrzyłeś jako const to dlaczego nie muszę jej od razu zainicjalizować? Co w tej tablicy jest w takim razie stałe?

0

Stałe są obiekty, na które wskazują pola tej tablicy. Sama tablica, jak i jej elementy, są non-const.

0

teoretycznie możesz napisać nawet tak:
const A* const * const tablicaA;
wtedy jej nie ruszysz.

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