没有typedef的struct - 不能在指向成员的指针中使用

时间:2013-03-21 12:48:06

标签: c++ types casting pointer-to-member

我有一个简单的结构,我想要一个指向成员的指针c。我正在使用MSVC2012,如果我没有将struct 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

1 个答案:

答案 0 :(得分:7)

  

如果我没有将struct abc声明为类型定义(typedef),我就不能使用它..怎么来的?

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

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