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

Проблема с указателем на элемент вектора - 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, а также, чтобы потом уже не перезаписывала его, но почему то... подробнее

Показать сообщение отдельно
Fobes
16 / 16 / 2
Регистрация: 19.09.2012
Сообщений: 212
16.07.2015, 10:40  [ТС]
IGPIGP, DrOffset, сорри, вчера уснул )) Выкрутился в общем, правда не знаю к чему это сейчас приведет, на мой взгляд все должно работать нормально. Растолкуйте, умные люди плиз)
к классу TNode добавил 2 поля:
C++
1
2
        bool valid;         //валидный ли узел
        bool connected;     //есть ли к нему подключение
При подключении провода к узлу connected выставляется в true
При удалении об А деструктор стал выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
TObjectBase::~TObjectBase()
{
    for (unsigned int i = 0; i < nodes.size(); i++)
    {
        if (nodes[i]->connected)
        {
            nodes[i]->valid = false;
        }else{
            delete nodes[i];
        }
    }
}
т.е. мы удаляем только не подключенные узлы. Указатель в векторе ведь в автоматической памяти и они удалятся вместе с вектором, а память останется во владении указателя класса В. При удалении об В сносим оставшееся
C++
1
2
3
4
TWire::~TWire()
{
    delete firstNode, lastNode;
}
Ну и соответственно при удалении базового класса мы перестаем менять координаты таким образом:
C++
1
2
3
4
5
6
7
int TNode::getBaseX()
{
    if (this->valid) {
        X = *this->baseX;
    }
    return X;
}
Я верно мыслю или все же так лучше не делать ?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru