Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Способы затолкать OpenCL и C++ в один файл http://www.cyberforum.ru/cpp-beginners/thread1499323.html
Я лично пробовал способы затолкать OpenCL в C++ файл одним нетривиальным способом: использовать трюк с #ifdef чтобы компиляторы не конфликтовали и не выдавали друг другу ошибку. Так можно было использовать общие функции. Однако приходилось включать определенные флаги при компиляции OpenCL. Скоро выйдет OpenCL 2.1, правда не известно будет ли нативный способ затолкать OpenCL в C++ файл. Если да,...
C++ Какие независимые друг от друга изменения позволят коду отработать корректно? Какие независимые друг от друга изменения позволят коду отработать корректно: class Сountеr { public: // 1 void Count(); // 2 }; int main() { Сountеr obj; http://www.cyberforum.ru/cpp-beginners/thread1499313.html
C++ Перегрузка операций
Цитата из Р. Лафоре "Объекто-ориентированное программирование в C++": Объект, стоящий с левой стороны операции ... вызывает функцию оператора. Объект, стоящий справа от знака операции, должен быть передан в функцию в качестве аргумента. Далее идет пример: #include <iostream> using namespace std; //---------------------------------------------------------------------------//...
Сортировка массива 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, а также, чтобы потом уже не перезаписывала его, но почему то данные в функцию посылаются некорректно, где допущена ошибка? Код: #include <iostream> using namespace std; int check(int a, int b) { подробнее

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