我在使用void *构建结构时遇到问题。我的C ++代码如下:

struct BUFF_TYPE {
    int a;
    int b;
};
typedef struct BUFF_TYPE BUFF_TYPE;

struct REG_TYPE {
    int c;
    void *buff;
};
typedef struct REG_TYPE REG_TYPE;

REG_TYPE regs[20];
const BUFF_TYPE b_A = {3,5};


void func_x() {
    int x,y;
    regs[4].buff = (BUFF_TYPE*)&b_A;
    x = regs[4].buff->a;
    y = regs[4].buff->b;
}


它给了我:

error: ‘void*’ is not a pointer-to-object type


在x和y分配中,能否请您告诉我如何访问这些a和b值?

顺便说一句,我需要void *,因为有时我需要指向其他类型的缓冲区。

最佳答案

使用->之前,必须将regs [4] .buff转换为BUFF_TYPE *,因此需要:

((BUFF_TYPE *)regs [4] .buff)-> a

09-08 04:39