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

Можно ли удалить объект экземпляра класса из самого себя? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти количество чисел в массиве типа char http://www.cyberforum.ru/cpp-beginners/thread1303976.html
задание полностью стоит следующее: в массиве типа char вывести только те слова, которые состоят из латинских букв и вывести количество чисел в массиве, если такие имеются. Числе, не цифр! #include<iostream> #include<string.h> #include <stdlib.h> using namespace std; int main() { char text;//ñòðîêà
C++ Удалить элементы главной диагонали Удалить элементы главной диагонали Почему не работает? for (i=0; i<n; i++) for (j=0; j<m-1; j++) if (i=j) for (i=j; i<n-1; i++) mas=mas; cout<<"our array\n"; http://www.cyberforum.ru/cpp-beginners/thread1303975.html
Создание, просмотр и удаление элементов списка, организованного по принципу LIFO C++
Что делать? Программа просит идентификатор true, false. #include "stdafx.h" #include <iostream> #include <process.h> #include <conio.h> using namespace std; //визначення перелічуваного типу користувача boolean enum boolean(true, false); //визначення шаблону елемента списку за допомогою типу struct struct stack{
Обработка двумерного массива: найти количество строк и номер столбца по условию C++
#include <iostream> #include <iomanip> using namespace std; const int N=20; const int M=20; int main() { double a;
C++ Подскажите.Как вывести N-ую строку или столбец из матрицы? http://www.cyberforum.ru/cpp-beginners/thread1303921.html
Подскажите.Как вывести N-ую строку или столбец из матрицы?
C++ Ошибка "stack around the variable 'n' was corrupted." Есть такая программа. Натуральные числа от 0 до n(a0-an) Необходимо найту сумму всех чисел кратных 5. Выдает ошибку stack around the variable 'n' was corrupted. Почему? #include <clocale> #include <cstdio> int main(){ setlocale(LC_ALL, "Russian"); int n, a, sum=0; printf("введите n"); подробнее

Показать сообщение отдельно
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
19.11.2014, 20:36     Можно ли удалить объект экземпляра класса из самого себя?
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
Не, ну тут я погорячился, т.к. VS ты под линукс не соберёшь, ровно как и GCC под Windows, по этому понятно что "o" и "dll" одновременно мешать нельзя
Причем тут линукс? GCC для Windows - это MinGW. Я изначально про него и говорил. Эту проблему решают обычно несколькими способами:
1. Дают юзерам исходники, собирай подо что хочешь и как хочешь.
2. Дают юзерам собранные версии под каждый из поддерживаемых компиляторов.
3. Дают юзерам одну библиотеку, но которая работает на всех компиляторах (с использованием С-style интерфейсов (COM и т.п.))
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
То есть по сути у меня для конкретной оси компилятор один и тот же и в случае смены его версии я полностью пересобираю проект, в таком случае подобных проблем, описанных выше, быть не должно же, верно?
Верно. Я тебе об этом пару постов назад написал. Если ты контролируешь сборку и использование своих библиотек, то большая часть проблем тебя минует.

Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
То есть всё же самый грамотный вариант, это забить на шерд поинтеры и делать свой смарт поинтер с подсчётом ссылок, который бы всё удалял в одном месте, например в модуле - менеджере памяти, так ?
Для заворачивания COM-подобных объектов из DLL в смарт-пойнтер лучше всего использовать нечто вроде boost::intrusive_ptr. А вообще не вижу никаких особых проблем использовать shared_ptr, почему ты решил что он не подойдет?

Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
А что каждая версия рантаймов обратно не совместима что ли? А...забей
В том и дело, что совместима, но если у dll один экземпляр runtime (даже тот же самый), а у exe - другой, то как по-твоему будет освобождаться память, переданная через границу dll? Мы же это уже обсуждали, ты забыл что-л и все? )

Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
Т.к. если я теряю последнюю ссылку на QSharedPointer и аналоги в ЕХЕ, создав его в DLL, то в ЕХЕ он и удалиться, что не правильно, так ?
Как только ты теряешь последнюю ссылку, то объект удалится. Почему это неправильно? Он удалится может где угодно, главное, чтобы для удаления была вызвана функция со стороны DLL, где он создавался. Все.
 
Текущее время: 08:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru