Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314

shared_ptr указывающий на интерфейс?

18.01.2013, 18:42. Показов 5467. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли вот так:
C++
1
2
boost::shared_ptr<HGE> hge; // хочется вот так
HGE * hge; // вместо
Мнение компилятора на всё это следующее:
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'HGE *' (or there is no acceptable conversion)
E:\Source\VisualStudio2008\Project\Pheno men\Phenomen\Source\boost/smart_ptr/shared_ptr.hpp(309): could be 'boost::shared_ptr<T> &boost::shared_ptr<T>::operator =(const boost::shared_ptr<T> &)'
with
[
T=HGE
]
while trying to match the argument list '(boost::shared_ptr<T>, HGE *)'
with
[
T=HGE
]
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2013, 18:42
Ответы с готовыми решениями:

Скрипт указывающий путь
Нужен скрипт, который будет отсылать свой путь, т.е где находится сам скрипт на гейт через каждые 3 часа. Например, если скрипт...

Указатель в классе, указывающий на этот же класс
Разбирал чужой код и нашел примерно такую конструкцию: class Sample { public: Sample(); virtual ~Sample(); int Method();...

Google Maps указывающий на адрес моей компании
Здраствуйте, делаю сайт (на html) и во вкладке КОНТАКТЫ хочу прикрепить карту Google Maps, которая будет указывать на адрес моей...

27
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
21.01.2013, 21:42  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ForEveR Посмотреть сообщение
vbloodv, Да как бэ это обычный указатель на функцию. И это действительно основы.
Да, что-то я сглупил. Я знаю, что такое указатель на функцию. Работал с Callback функциями и делал свои. Просто указатель на функцию как параметр принимается определенного типа, в новой для меня теме мозг отказывался принять то что это void Release_hge(HGE *ptr) как никак должна же быть перегрузка для деструкторов и т.д. по аналогии с предикатом для сортировки.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
22.01.2013, 19:31
К слову можно сделать проще и не писать доп. функции.
Насколько я понимаю так вполне будет работать.

C++
1
boost::shared_ptr<HGE> hge(hgeCreate(HGE_VERSION), boost::bind(&HGE::Release, _1));
1
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
23.01.2013, 00:09  [ТС]
Цитата Сообщение от ForEveR Посмотреть сообщение
boost::shared_ptr<HGE> hge(hgeCreate(HGE_VERSION), boost::bind(&HGE::Release, _1));
Уровень !!! Ты гуру...
Ошибка:
Кликните здесь для просмотра всего текста

e:\source\visualstudio2008\project\pheno men\phenomen\source\boost\bind\mem_fn.hp p(342) : error C2298: 'return' : illegal operation on pointer to member function expression

При нажатии на ошибку переходит:
C++
1
2
3
4
5
6
    explicit dm(F f): f_(f) {}
 
    R & operator()(T * p) const
    {
        return (p->*f_); // в эту часть кода
    }
Но объявление смотрится эффектно !

Добавлено через 6 минут
Вот собственно всё что есть:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
1>------ Build started: Project: Phenomen, Configuration: Debug Win32 ------
1>Compiling...
1>Phenomen.cpp
1>e:\source\visualstudio2008\project\phenomen\phenomen\source\boost\bind\mem_fn.hpp(318) : warning C4180: qualifier applied to function type has no meaning; ignored
1>        e:\source\visualstudio2008\project\phenomen\phenomen\source\boost\bind\bind_template.hpp(344) : see reference to class template instantiation 'boost::_mfi::dm<R,T>' being compiled
1>        with
1>        [
1>            R=void (void),
1>            T=HGE
1>        ]
1>        e:\source\visualstudio2008\project\phenomen\phenomen\source\phenomen.cpp(4) : see reference to class template instantiation 'boost::_bi::bind_t<R,F,L>' being compiled
1>        with
1>        [
1>            R=void (__stdcall &)(void),
1>            F=boost::_mfi::dm<void (void),HGE>,
1>            L=boost::_bi::list1<boost::arg<1>>
1>        ]
1>e:\source\visualstudio2008\project\phenomen\phenomen\source\boost\bind\mem_fn.hpp(326) : warning C4180: qualifier applied to function type has no meaning; ignored
1>e:\source\visualstudio2008\project\phenomen\phenomen\source\boost\bind\mem_fn.hpp(331) : warning C4180: qualifier applied to function type has no meaning; ignored
1>e:\source\visualstudio2008\project\phenomen\phenomen\source\boost\bind\mem_fn.hpp(345) : warning C4180: qualifier applied to function type has no meaning; ignored
1>e:\source\visualstudio2008\project\phenomen\phenomen\source\boost\bind\mem_fn.hpp(350) : warning C4180: qualifier applied to function type has no meaning; ignored
1>e:\source\visualstudio2008\project\phenomen\phenomen\source\boost\bind\mem_fn.hpp(362) : warning C4180: qualifier applied to function type has no meaning; ignored
1>e:\source\visualstudio2008\project\phenomen\phenomen\source\boost\bind\mem_fn.hpp(342) : error C2298: 'return' : illegal operation on pointer to member function expression
1>        e:\source\visualstudio2008\project\phenomen\phenomen\source\boost\bind\mem_fn.hpp(341) : while compiling class template member function 'void (__stdcall &boost::_mfi::dm<R,T>::operator ()(T *) const)'
1>        with
1>        [
1>            R=void (void),
1>            T=HGE
1>        ]
1>        e:\source\visualstudio2008\project\phenomen\phenomen\source\boost\bind\bind_template.hpp(344) : see reference to class template instantiation 'boost::_mfi::dm<R,T>' being compiled
1>        with
1>        [
1>            R=void (void),
1>            T=HGE
1>        ]
1>        e:\source\visualstudio2008\project\phenomen\phenomen\source\phenomen.cpp(4) : see reference to class template instantiation 'boost::_bi::bind_t<R,F,L>' being compiled
1>        with
1>        [
1>            R=void (__stdcall &)(void),
1>            F=boost::_mfi::dm<void (void),HGE>,
1>            L=boost::_bi::list1<boost::arg<1>>
1>        ]
1>Build log was saved at "file://E:\Source\VisualStudio2008\Project\Phenomen\Phenomen\.solution\Debug\Build\BuildLog.htm"
1>Phenomen - 1 error(s), 6 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
23.01.2013, 17:12
vbloodv, Ну да, получается в случае, если this передается через параметр - сработает. А если через регистры - нет
0
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
23.01.2013, 21:12  [ТС]
ForEveR, Пожалуйста дай лик.без. по использованию умных указателей для интерфейсов. Я не понимаю что значит регистры
0
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
24.01.2013, 14:17
а причем тут умные указатели? это голая теория С++а
0
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
24.01.2013, 23:00  [ТС]
l_a_m, Не это было два отдельных вопроса )))
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
26.01.2013, 10:14
Цитата Сообщение от vbloodv Посмотреть сообщение
Пожалуйста дай лик.без. по использованию умных указателей для интерфейсов
Использование умных указателей для интерефейсов ничем не отличается от использования умных указателей.
http://www.boost.org/doc/libs/... ed_ptr.htm
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2013, 10:14

Выступ за пределы блока, указывающий на ячейку его вызвавшую
Как грамотно сделать такой вот блок с выступом, указывающим на ячейку, клик по которой его вызвал? Сам блок я сделал...

Вирус создает на флешке файлы и папки с непонятными именами. Раньше создавал ярлык, указывающий на ДЛЛ-ку
Раньше создавал ярлык, указывающий на ДЛЛ-ку C:\Winows\system32\rundll, а содержимое прятал. Теперь, похоже, модернизировался. Я тыкал на...

C++ 11 shared_ptr
Есть вопрос из теста You have some code that creates a HardwareContext object representing a hardware resource. You need to do some...

Shared_ptr
Всем хай. Есть некий класс и в нём такой метод: class Base { public: std::shared_ptr&lt;Base&gt; get_ptr() { ...

Shared_ptr
Есть следующий код: int main() { std::map&lt;std::string, std::shared_ptr&lt;int&gt;&gt; mp; while (true) { add(mp); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Опции темы

Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru