Как мне объявить непрозрачную анонимную структуру, определенную в сторонней организации?

Я работаю над сторонним модулем оболочки. Я надеюсь, что мой основной заголовочный файл не имеет сторонних связанных заголовочных файлов. Каждый тип параметра и возвращаемый тип непрозрачны, только объявив его. Но есть анонимная структура, определенная следующим образом:

typedef struct {
int x;
int y;
int width;
int height;
} IppiPoint;

Я не могу изменить сторонний заголовочный файл. Я понятия не имею, чтобы объявить это. Вот что я пробовал и сообщения об ошибках, которые я получил

1.

struct IppiPoint;
error C2371: 'IppiPoint' : redefinition; different basic types

2.

typedef struct IppiPoint;
... warning C4091: 'typedef ' : ignored on left of 'IppiPoint' when no variable is declared
... error C2371: 'IppiPoint' : redefinition; different basic types

Как мне объявить такую ​​анонимную структуру?

0

Решение

Создайте свой собственный тип struct Bob;, Используйте это вместо этого.

В CPP, определить struct Bob следующее:

struct Bob {
IppiPoint contents;
};

и до тех пор, пока IppiPoint это стандартная компоновка, вы можете reinterpret_cast<IppiPoint*>(pointer_to_bob) на законных основаниях.

Указатель на объект со структурным типом стандартной компоновки может быть reinterpret_cast для указания на его первый элемент не статических данных (если он имеет элементы не статических данных) или иным образом на его первый подобъект базового класса (если он есть), и наоборот наоборот. (заполнение не допускается до первого элемента данных). Обратите внимание, что строгие правила псевдонимов все еще применяются к результату такого приведения.

Может быть, выбрать лучшее имя, чем Bob,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]