gpt4 book ai didi

c++ - 如果在声明中使用了 __typeof__ 宏,是否可以访问结构成员?

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:11 25 4
gpt4 key购买 nike

我用 g++ 编译,我的代码中有一些数据结构:

typedef struct {
int member;
// [...]
} Record;

class Data {
Record * records;
// [...]
static int method(const void * ptr);
};

然后第一个版本工作:

int Data::method(const void * ptr) {
Record * rec_1 = (Record *) ptr;
return rec_1->member;
}

第二个版本没有:

int Data::method(const void * ptr) {
__typeof__(records) * rec_1 = (__typeof__(records) *) ptr;
return rec_1->member;
}

并抛出一个错误:

error: request for member ‘member’ in ‘* rec_1’, which is of non-class type ‘Record*’

我使用 __typeof__ 宏,因为它让我不用担心 records 是什么类型。是否可以保留 __typeof__ 宏并能够访问结构的成员?

最佳答案

records 成员是指向 Record 的指针,而不是 Record。因此,您将 rec_1 声明为指向 Record 的指针,而不是您想要的指向 Record 的指针。

此外,对于那些试图编译代码的人:

  • 您将“typedef”拼错为“typdef”。
  • 您在想要rec_1->member 的地方写了Record->member
  • 不允许静态成员函数method 引用成员records。删除 static 允许它编译。<​​/li>

关于c++ - 如果在声明中使用了 __typeof__ 宏,是否可以访问结构成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12691333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com