我想知道执行以下操作是否安全:
原始类型(在我的代码之外定义):
struct Original
{
unsigned long index;
double x;
double y;
};
我的代理类型(添加一个或多个辅助成员变量):
struct Proxy
{
unsigned long index;
double x;
double y;
unsigned long aux_data;
};
外部函数的函数签名:
void external_func(Original* arr, int len);
用法:
int len;
Proxy* arr = new Proxy[ len ];
external_func( reinterpret_cast<Original*>( arr ), len );
delete[] arr;
原始结构是在我正在使用的库中定义的(并且不能直接编辑)。该库还包含访问Original *数组的函数。出于我的目的,这些对象中的每一个都有助于存储一些辅助数据(可以通过我的部分代码而不是外部库访问)。当然,如果Original是我代码的一部分,我会在这里使用继承/多态。
或者,这样做会更好:
class Proxy : public Original
{
public:
unsigned long aux_data;
};
我需要担心这里的虚拟构造函数吗? 我会使用dynamic_cast而不是reinterpret_cast吗?