0

構造体への 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* が必要です。

4

3 に答える 3

2

void*type を使用しないでくださいBUFF_TYPE*

void*他の理由で必要な場合(コードに基づいている可能性は低い)、ポインターをキャストすることでこれを解決できます。

x = ((BUFF_TYPE*)regs[4].buff)->a;
y = ((BUFF_TYPE*)regs[4].buff)->b;
于 2012-06-30T22:31:23.733 に答える
1

-> を使用する前に、regs[4].buff を BUFF_TYPE*​​ にキャストする必要があるため、次のものが必要です。

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

于 2012-06-30T22:31:03.823 に答える
0

逆参照する前に、構造体のvoid* buffメンバーを にキャストします。REG_TYPEBUFF_TYPE*

于 2012-06-30T22:33:29.367 に答える