我的结构如下:
struct Param
{
Param(const void* a, const std::vector<int>& b) : c(a), d(b) {}
const void* c;
const std::vector<int> d;
};
现在,在创建一个新的Param结构实例之后,我将一个类实例'this'指针存储在成员变量c中。稍后在C Api(在C ++代码内)中,我需要返回引用类指针以调用方法:
static_cast<ClassA*>(static_cast<Param*>(var->addr)->c)->ClassAMethod()
但是编译器声明无效的表达式类型转换。如果Param实例的地址存储在'addr'变量中,如何在C Apis中同时引用这两个Param结构变量?
答案 0 :(得分:1)
您无法使用static_cast
放弃constness,如果ClassMethodA()
为const
,则可以使用static_cast<const ClassA*>(static_cast<Param*>(var->addr)->c)->ClassAMethod()
,否则您需要放弃c
为const
,然后您可以使用const_cast
首先转换c
以键入void*
。