Я использую стороннюю библиотеку, которая имеет объявление, подобное этому:
typedef struct {} __INTERNAL_DATA, *HandleType;
И я хотел бы создать класс, который принимает HandleType в конструкторе:
class Foo
{
Foo(HandleType h);
}
без , включая заголовок, который определяет HandleType . Обычно я просто объявляю такой тип вперед, но не могу понять синтаксис для этого. Я действительно хочу сказать что-то вроде:
struct *HandleType;
Но это говорит "Ожидаемый идентификатор до *" в GCC. Единственное решение, которое я вижу, это написать мой класс так:
struct __INTERNAL_DATA;
class Foo
{
Foo(__INTERNAL_DATA *h);
}
Но это зависит от внутренних деталей библиотеки. То есть он использует имя __INTERNAL_DATA, которое является подробностью реализации.
Похоже, что можно сделать предварительное объявление HandleType (часть публичного API) без использования __INTERNAL_DATA (часть реализации библиотеки.) Кто-нибудь знает, как?
РЕДАКТИРОВАТЬ: Добавлено больше информации о том, что я ищу.