没有类型定义的结构——不能在指向成员的指针中使用

struct without typedef - cannot use in a pointer-to-member

本文关键字:成员 指针 不能 类型 定义 结构      更新时间:2023-10-16

我有一个简单的结构,我想要一个指向成员c的指针。我使用MSVC2012,如果我不将结构abc声明为类型定义(typedef),我就不能使用它。怎么会?

struct abc
{
    int a;
    int b;
    char c;
};
char (struct abc)::*ptt1 = &(struct abc)::c; // Error: error C2144: syntax error : 'abc' should be preceded by ')'
typedef struct abc;
char abc::*ptt1 = &abc::c; // Compiles just fine

如果我没有将结构abc声明为类型定义(typedef),我就不能使用它。怎么会?

可以,而且不需要struct关键字,也不需要typedef关键字。只需这样做:

char abc::*ptt1 = &abc::c;