取消引用将指向结构的Void指针

时间:2016-06-01 16:18:01

标签: c++ struct

我有以下结构:

typedef struct TTCAPMessage {
        uint8_t packagetype; //{should be Query /w Permission or Response}
        uint32_t transid; //{transaction ID number}
        std::vector<TTCAPComponent_t> components; //{a string of component Information elements}
        bool parseok; //{false if error occured}
} TTCAPMessage_t;

typedef struct TTCAPComponent {
        uint8_t componenttype; //{should be Invoke, Return Result, Reject, etc.}
        uint8_t componentid; //{component ID code}
        uint8_t operationcode; //Query operation code, "Private TCAP"
        void* pParameterSet;
} TTCAPComponent_t;

typedef struct myStruct {
      .....
} mySruct_t;

在TTCAPComponent_t中,有一个void *应该指向两种不同类型的结构。在这种情况下,它将指向myStruct_t。我想检索其中的数据。

因此,为了解除引用,我尝试了以下许多变体而没有运气:

tcapMessage->components[0]->(myStruct_t*)pParameterSet->(Accessing Structure data) ....

我尝试过在线查找资源,但出于某种原因,我无法让它发挥作用。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

箭头->运算符仅接受成员名称作为其右侧,因此您无法在其中放置投射。您正在寻找以下语法:

((struct myStruct_t*)tcapMessage->components[0]->pParameterSet)->...