Я использую 3-й библиотеку партии, которая имеет декларацию, как это:вперед объявить указатели к структурам в C++
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 (часть реализации библиотеки). Кто-нибудь знает как?
EDIT: Добавлено более подробное описание того, что я ищу.
, но тогда мне нужно переслать-объявить __INTERNAL_DATA, это имя, которое может быть изменено или вообще удалено. (Так как это деталь реализации библиотеки.) –
Так может быть HandleType для всего, что вы знаете. – dirkgently
Ваши требования не ясны, возможно, вы можете добавить более подробную информацию. – dirkgently