Есть такой код: data.h ====== class Data : public Object { public: typedef boost::intrusive_ptr<Data>; class Visitor { public: virtual ~Visitor() {} operator()(Measure::Ptr measure) {} }; virtual void apply_visitor(Visitor &visitor) = 0; }; measure.h ========= class Measure : public Data { public: typedef boost::intrusive_ptr<Measure> Ptr; void apply_visitor(Visitor &visitor) { visitor(Ptr(this)); } }; Пояснения: Класс Object реализует подсчет ссылок и предназначен для использования совместно с boost::intrusive_ptr<>. Разумеется, этот код не компилируется, т.к. в момент обработки data.h компилятор ничего не знает про Measure::Ptr и, следовательно, не компилируется класс Data::Visitor. Что делать? P.S. В operator() класса Visitor можно передавать ссылку на Measure - для этого достаточно в data.h добавить строку class Measure;, но хочется передавать имеено Measure::Ptr.
Ответ на:
комментарий
от klalafuda
Ответ на:
комментарий
от syomin
Ответ на:
комментарий
от syomin
Ответ на:
комментарий
от syomin
Ответ на:
комментарий
от int19h
Ответ на:
комментарий
от syomin
Ответ на:
комментарий
от KIV
Ответ на:
комментарий
от syomin
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от syomin
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Перекрёстные ссылки в иерархии. Композиция. Нуб. (2016)
- Форум ошибка: ‘AFSObject’ является недостижимой базой ‘AFSTestQuad’[why?] (2011)
- Форум Type erasure в C++ (2021)
- Форум Свой класс Any (2014)
- Форум Thread safe Queue + delete object's with O(1) (2013)
- Форум доступ к шаблонным объектам фабрики??? (2006)
- Форум C++ , Шаблоны, ошибка линкера LNK2019 (2008)
- Форум PIMPL без указателя (2016)
- Форум Не компилируется std::not1(boost::mem_fn(...)) (2005)
- Форум Упреждающее объявление класса (2007)