如果我有:
struct S
{
std::size_t szArray;
int dArray[];
} ;
int main()
{
extern int (*pArr)[]; //pointer to member 'dArray' of object with type 'S'
S *pStruct = /*??????????*/; //pointer to the object
}
获取此指针的最佳方法是什么?
答案 0 :(得分:3)
没有好办法。
唯一支持的方式是
#include <cstddef> // for offsetof
S *pStruct = reinterpret_cast<S*>
(reinterpret_cast<char*>(pArr) - offsetof(S, dArray));
请注意,offsetof
仅适用于标准布局类型,并且标准C ++不允许将未大小的数组作为类成员。除非你有充分的理由使用C语言,否则我建议std::vector<int>
会更安全,更方便。