Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/27: Рейтинг темы: голосов - 27, средняя оценка - 4.85
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314

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

18.01.2013, 18:42. Показов 5417. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru