Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двусвязный список шаблонных классов, а что если получится? 
V
    Опции темы
mes
Дата 27.9.2013, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(BearFear @  27.9.2013,  07:38 Найти цитируемый пост)
 ООП в данном случае - это очень много действий вокруг и около! 

не ооп, а использование встроенной виртуальности.. хотя и так тоже можно, но технология называется по другому... также имеется пример по приведенной выше ссылке smile


--------------------
PM MAIL WWW   Вверх
BearFear
Дата 27.9.2013, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



Только вот сообразить не могу. Ок есть шаблонная процедура которая на входе определяет тип и удаляет его. С удалением проблем нет. Но что в нее подать и откуда? Сохранить данные в ряд можно либо через void*, либо...
Ладно, сайчас кофе подействует, до работы доберусь,  должно что то родиться.
PM MAIL   Вверх
mes
Дата 27.9.2013, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



что то типо этого :
Код

struct closure
{
  void const* pointer;
  void (*fn)(void const*) 
};

void call(closure const& c)
{
   c.fn(c.pointer);
}

template<typename T> 
struct delete_fn
{
  static void apply(void const* ptr)
  {
      delete reinterpret_cast<T const*>(ptr);
  }
};


template<typename T> 
closure make_deleter(T const* ptr)
{
  closure c;
  c.pointer = ptr;
  c.fn = &delete_fn<T>::apply;
  
  return c;
}


 

Это сообщение отредактировал(а) mes - 28.9.2013, 20:23


--------------------
PM MAIL WWW   Вверх
volatile
Дата 27.9.2013, 11:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Хех, как будто проблема удаления это главная проблема
Цитата(volatile @  25.9.2013,  18:58 Найти цитируемый пост)
вы их правильно удалить даже не сможете, ...
я уж не говорю о чем-то другом.


О чем-то другом еще подумайте, если вы с объктами еще что-то хотите делать, кроме удаления  smile 

PM MAIL   Вверх
BearFear
Дата 27.9.2013, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



В первом сообщении еще было о том, что удаление и хранение разных типов в списке является главной проблемой. Если нет потребности в ином, зачем иное прописывать? Чтоб просто так было и плодились ошибки?
PM MAIL   Вверх
BearFear
Дата 27.9.2013, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



mes, стало быть тип хранится в статическом коллбэке и сохраняется туда на стадии компиляции. Тип хранимого данного в этот момент не важен. Спасибо большое! Думаю Скептикам вроди volatile есть что поиметь ввиду. Ыть  smile 
PM MAIL   Вверх
mes
Дата 27.9.2013, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(BearFear @  27.9.2013,  12:10 Найти цитируемый пост)
стало быть тип хранится в статическом коллбэке и сохраняется туда на стадии компиляции. Тип хранимого данного в этот момент не важен. 
aга, примерно так smile


--------------------
PM MAIL WWW   Вверх
BearFear
Дата 27.9.2013, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



mesvolatileakizelokroxvrbaldina, спасибо вам большое за помощь!
PM MAIL   Вверх
BearFear
Дата 28.9.2013, 03:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



Еще одна особенность. Данный метод пригоден для стековых данных. Однако, перегрузка delete все решит. Либо френд (наверно будет безопаснее).

Это сообщение отредактировал(а) BearFear - 28.9.2013, 04:00
PM MAIL   Вверх
mes
Дата 28.9.2013, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(BearFear @  28.9.2013,  02:58 Найти цитируемый пост)
 Однако, перегрузка delete все решит. Либо френд

 smile  Однако, выпью чашечку кофе, Либо сбоку..  smile

Добавлено через 47 секунд
Цитата(BearFear @  28.9.2013,  02:58 Найти цитируемый пост)
Еще одна особенность. Данный метод пригоден для стековых данных.

?  smile 



--------------------
PM MAIL WWW   Вверх
BearFear
Дата 28.9.2013, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



Динамическое создание будет выглядеть немного по иному, не так как было написано mes. Если действовать по канонам только динамических объектов (сокрытие конструктора, деструктора и прочих методов), то удаление может происходить либо через производный класс  и протектед, либо через перегрузку делит, либо через френд.
PM MAIL   Вверх
mes
Дата 28.9.2013, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(BearFear @  28.9.2013,  17:48 Найти цитируемый пост)
Если действовать по канонам только динамических объектов (сокрытие конструктора, деструктора и прочих методов),

о время ! о нравы !
Цитата(BearFear @  28.9.2013,  17:48 Найти цитируемый пост)
то удаление может происходить либо через производный класс  и протектед, либо через перегрузку делит, либо через френд. 

мысль  хоть и с трудом, но стала понята...  smile  
однако далека от истины, хотя частичку проблемки отражает.. 
полагаю вас тянет ознакомиться с SFINAE..  smile 

Это сообщение отредактировал(а) mes - 28.9.2013, 20:35


--------------------
PM MAIL WWW   Вверх
BearFear
Дата 29.9.2013, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



Хм, о таком маневре не знал. Спасибо за подсказку.  Подстановка вызова метода в области параметра (надеюсь дело не ограничено только полями, так как нашел пример с полями. Про методы там не писалось). Попробую поискать еще побольше инфы.

Это сообщение отредактировал(а) BearFear - 29.9.2013, 02:21
PM MAIL   Вверх
mes
Дата 29.9.2013, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(BearFear @  29.9.2013,  01:12 Найти цитируемый пост)
Про методы там не писалось

с методами такая же история smile


--------------------
PM MAIL WWW   Вверх
BearFear
Дата 29.9.2013, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



Тогда ваще ГУД!
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1443 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.