Форум программистов, компьютерный форум, киберфорум
Наши страницы

Проблема с указателем на элемент вектора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Способы затолкать OpenCL и C++ в один файл http://www.cyberforum.ru/cpp-beginners/thread1499323.html
Я лично пробовал способы затолкать OpenCL в C++ файл одним нетривиальным способом: использовать трюк с #ifdef чтобы компиляторы не конфликтовали и не выдавали друг другу ошибку. Так можно было...
C++ Какие независимые друг от друга изменения позволят коду отработать корректно? Какие независимые друг от друга изменения позволят коду отработать корректно: class Сountеr { public: // 1 void Count(); // 2 }; int main() { Сountеr obj; http://www.cyberforum.ru/cpp-beginners/thread1499313.html
C++ Перегрузка операций
Цитата из Р. Лафоре "Объекто-ориентированное программирование в C++": Объект, стоящий с левой стороны операции ... вызывает функцию оператора. Объект, стоящий справа от знака операции, должен быть...
Сортировка массива c++ std :: sort() C++
Дан двумерный массив символов char M, надо отсортировать его при помощи std :: sort(), построчно, т.е. допустим было 00011 11111 00000 00000 11111 А стало 00000 00000 00011
C++ Как отправить почту через Telnet? http://www.cyberforum.ru/cpp-beginners/thread1499247.html
Не получается оправка почты через telnet. Пробую mail, yandex не работает. Возможно ли отправить?
C++ Запомнить, какое число меньше 437, записать его в переменную и больше не изменять. Найти ошибку Добрый день, решал задачу, нужно было сделать так, чтобы программа запомнила, какое число меньше 437 и записала его в переменную number, а также, чтобы потом уже не перезаписывала его, но почему то... подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6912 / 3190 / 315
Регистрация: 04.12.2011
Сообщений: 8,829
Записей в блоге: 5
15.07.2015, 19:46
Цитата Сообщение от Fobes Посмотреть сообщение
при удалении А пишу nodes[i] = NULL; но при проверке в В он не является нулевым
Fobes, он это кто? В векторе хранятся указатели и в другом классе хранятся указатели и общее у них - адреса на которые они смотрят. Но это же разные переменные. Вспомните, - при создании вектора он запускает конструктора, то есть создаёт объекты. Поэтому установив в ноль его указатель Вы ничего не сделали для изменения указателя в классе B так как это просто разные переменные. А память то освободили и разыменование по адресу - UB. Как вариант, совет smartpointer, может сработать. Имея указатель на указатель в векторе и указатель в классе B вы будете иметь доступ к одной и той же переменной из обоих классов. Однако такое построение это надругательство над инкапсуляцией как таковой.
Если связь этих классов неминуема, то может сделать один вложенным и организовать доступ к указателю через класс член (его метод)? То есть в векторе хранить не непосредственно указатели, а экземпляры B (которые хранят указатели).
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru