Если, например, у вас был вектор int
:
std::vector<int> vec(10);
, а затем что-то вроде
int other = vec[0];
other = 5;
Я думаю, что большинство людей поймут, что задание other = 5;
изменит только значение переменной other
, а не значение vec[0]
.
Теперь давайте возьмем ваш код:
myclass* other = top[0];
other = new myclass();
Здесь все точно так же: Присвоение other = new myclass();
только изменяет переменную other
и, куда она указывает, не изменяется top[0]
.
То, что я считаю , вы хотите использовать other
как ссылка на значение в top[0]
, что можно сделать с помощью ссылок:
myclass*& other = top[0];
other = new myclass();
Теперь other
будет ссылкой на значение в top[0]
, поэтому назначение изменится top[0]
.
И для полноты картины, и, следуя указаниям указателя на указатель в заголовке, вы, конечно, можете решить его с помощью указателей на указатели:
myclass** other = &top[0];
*other = new myclass();
С указанным выше other
будет указатель на top[0]
, и вам нужно использовать оператор разыменования *
(как в *other
) в назначении для изменения значения на top[0]
. Я действительно рекомендую ссылки, хотя.