这个类可以是任何东西(非pod,可能有虚函数)。
我们无法修改该类的源代码。
用法示例:
onOptionItemSelected(Menu item)
可能的解决方案是在构造void f(ThirdPartyClass *o)
{
MyData *d = getData(o);
...
}
type:
ThirdPartyClass
但是如何实现struct Wrapper
{
ThirdPartyClass o;
MyData d;
};
功能呢?使用MyData* getData(ThirdPartyClass *o)
宏从offsetof
转到ThirdPartyClass*
是不正确的。有办法吗?
答案 0 :(得分:0)
我可能会使用"面向数据库"程序。假设您已将Wrappers注册到矢量中,您可以执行以下操作:
std::vector<Wrapper> containers;
MyData* getData(ThirdPartyClass *o) {
for(int i = 0; i < containers.size(); i++) {
if(&containers[i] == o)
return &containers[i].d;
}
}
也许另一种方法是将ThirdPartyClass *parent
存储到您的MyData
对象中,然后您可以遍历MyData的文件。