Есть такой код:
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
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Thread safe Queue + delete object's with O(1) (2013)
- Форум Не компилируется std::not1(boost::mem_fn(...)) (2005)
- Форум Упреждающее объявление класса (2007)
- Форум java. Рунтайм объявление классов (2011)
- Форум [python]Сериализация вложенного класса (2009)
- Форум Делать вложенные классы или нет? (2014)
- Форум C++, шаблоны и вложеные классы (2008)
- Форум Вложенное определение классов в C++... (2003)
- Форум PHP: объявление static function вне класса ? (2020)
- Форум Как сделать вложенные в класс функции? (2018)