我正在开发第三方模块包装器。我希望我的主头文件没有任何第三方相关的头文件。每个参数类型和返回类型仅通过声明它是不透明的。但是有一个匿名结构定义如下:
/patient/432
我无法修改第三方头文件。我不知道要宣布它。这是我尝试过的和我得到的错误消息
1
typedef struct {
int x;
int y;
int width;
int height;
} IppiPoint;
2
struct IppiPoint;
error C2371: 'IppiPoint' : redefinition; different basic types
如何声明这样的匿名结构?
答案 0 :(得分:1)
创建自己的类型EObjectDescription.create(...)
。改为使用它。
在cpp中,按如下方式定义struct Bob;
:
struct Bob
只要struct Bob {
IppiPoint contents;
};
是标准布局,您就可以合法IppiPoint
。
指向标准布局结构类型对象的指针可以是reinterpret_cast指向其第一个非静态数据成员(如果它具有非静态数据成员)或其他第一个基类子对象(如果有的话) ,反之亦然。 (在第一个数据成员之前不允许填充)。请注意,严格别名规则仍适用于此类强制转换的结果。
也许选择一个比reinterpret_cast<IppiPoint*>(pointer_to_bob)
更好的名字。