| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Smart pointers - как повторить архитектуру из |
| Автор: KaraKum 21.3.2009, 12:00 | ||||
| Доброе время суток. Не пойму как компилится такая строчка: osg::ref_ptr<osg::Referenced> referenced = new osg::Referenced(); (используется библиотека OpenSceneGraph). Пытаюсь сымитировать такую же архитектуру следующим кодом:
При компиляции такая ошибка: ошибка: запрошено преобразование от ‘Lab*’ к нескалярному типу ‘LabTemplate<Lab>’ Ну а вот так, конечно, компилится:
Что я не так делаю? P.S. Вот 2 загаловочныx файлы из библиотеки osg, касающиеся этого примера: |
| Автор: andrew_121 21.3.2009, 12:08 |
| Тебе нужно перегрузить operator() для объекта. |
| Автор: mes 21.3.2009, 12:18 |
а может конструктор ? - LabTemplate(T*) .. |
| Автор: KaraKum 21.3.2009, 12:18 |
| Какого объекта - LabTemplate или Lab? Как переопределить и где он (этот оператор) должен вызываться? |
| Автор: mes 21.3.2009, 12:20 |
в этом случае "=" это не операция присваивания, а инициализация, т.е запись альтернатива этой : LabTemplate<Lab> lab (new Lab); |
| Автор: KaraKum 21.3.2009, 12:24 | ||
Добавил ещё такой конструктор:
Такая же ошибка компиляции. |
| Автор: mes 21.3.2009, 12:26 |
ну так не туда добавили |
| Автор: KaraKum 21.3.2009, 12:36 | ||||
| Точно! Теперь всё компилится Кому интересно, код теперь выглядет вот так:
P.S. Незнание вот этого "тонкого" момента и вызвало проблему:
Спасибо за помощь! |
| Автор: andrew_121 21.3.2009, 12:43 |
| mes, Да, и правда |