Я работаю над сторонним модулем оболочки. Я надеюсь, что мой основной заголовочный файл не имеет сторонних связанных заголовочных файлов. Каждый тип параметра и возвращаемый тип непрозрачны, только объявив его. Но есть анонимная структура, определенная следующим образом:
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
Как мне объявить такую анонимную структуру?
Создайте свой собственный тип struct Bob;
, Используйте это вместо этого.
В CPP, определить struct Bob
следующее:
struct Bob {
IppiPoint contents;
};
и до тех пор, пока IppiPoint
это стандартная компоновка, вы можете reinterpret_cast<IppiPoint*>(pointer_to_bob)
на законных основаниях.
Указатель на объект со структурным типом стандартной компоновки может быть reinterpret_cast для указания на его первый элемент не статических данных (если он имеет элементы не статических данных) или иным образом на его первый подобъект базового класса (если он есть), и наоборот наоборот. (заполнение не допускается до первого элемента данных). Обратите внимание, что строгие правила псевдонимов все еще применяются к результату такого приведения.
Может быть, выбрать лучшее имя, чем Bob
,
Других решений пока нет …