Я работаю над оболочкой стороннего модуля. Я надеюсь, что в моем основном заголовочном файле нет сторонних заголовочных файлов. Каждый тип параметра и тип возвращаемого значения непрозрачны, если их только объявить. Но есть анонимная структура, определенная следующим образом:
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
Как объявить такую анонимную структуру?
IppiPoint;
? - person Fynn   schedule 30.03.2016malloc
, то вам в любом случае нужна полная структура. - person Some programmer dude   schedule 30.03.2016MyPoint
в качестве среднего уровня. Но я хочуMyPoint
удобнее, я поставилoperator ippiPoint () const;
. И это единственное место, где можно увидеть ippiPoint. Поэтому я ищу возможные способы только объявить его и скрыть определение реальной структуры в файле cpp. - person Chen OT   schedule 30.03.2016MyPoint
в типIppiPoint
? И потом вы говорите, что это единственное использование типаIppiPoint
? Это не имеет смысла, вы создаете оператор преобразования, который не собираетесь использовать? Если и когда и где вы используете оператор преобразования, вы также используете тип и вам нужна полная структура, нет никакого способа обойти это. - person Some programmer dude   schedule 30.03.2016MyPoint
в качестве параметра для моих функций (включая заголовок). И я также используюMyPoint
в cpp для передачи (неявного преобразования) IppiPoint в функцию imp. Да, ты прав. Возможно, было бы неправильно помещать все эти вещи вMyPoint
. Если я хочу скрыть все детали, я должен определить такую функцию преобразования и в cpp. Спасибо - person Chen OT   schedule 30.03.2016