将static_cast转换为结构类型以访问其所有成员变量

时间:2018-12-13 18:02:17

标签: c++ c++11

我的结构如下:

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结构变量?

1 个答案:

答案 0 :(得分:1)

您无法使用static_cast放弃constness,如果ClassMethodA()const,则可以使用static_cast<const ClassA*>(static_cast<Param*>(var->addr)->c)->ClassAMethod(),否则您需要放弃cconst,然后您可以使用const_cast首先转换c以键入void*