如何声明在第三方中定义的不透明匿名结构?

时间:2016-03-30 11:32:03

标签: c++ opaque-pointers

我正在开发第三方模块包装器。我希望我的主头文件没有任何第三方相关的头文件。每个参数类型和返回类型仅通过声明它是不透明的。但是有一个匿名结构定义如下:

/patient/432

我无法修改第三方头文件。我不知道要宣布它。这是我尝试过的和我得到的错误消息

1

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

2

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

如何声明这样的匿名结构?

1 个答案:

答案 0 :(得分:1)

创建自己的类型EObjectDescription.create(...)。改为使用它。

在cpp中,按如下方式定义struct Bob;

struct Bob

只要struct Bob { IppiPoint contents; }; 是标准布局,您就可以合法IppiPoint

  

指向标准布局结构类型对象的指针可以是reinterpret_cast指向其第一个非静态数据成员(如果它具有非静态数据成员)或其他第一个基类子对象(如果有的话) ,反之亦然。 (在第一个数据成员之前不允许填充)。请注意,严格别名规则仍适用于此类强制转换的结果。

也许选择一个比reinterpret_cast<IppiPoint*>(pointer_to_bob)更好的名字。