gpt4 book ai didi

c++ - 不能取消引用类型定义结构指针的成员

转载 作者:行者123 更新时间:2023-11-30 01:49:02 24 4
gpt4 key购买 nike

我在名为 CFLite.c 的文件中有结构定义如下

typedef struct CFLString    CFLString;
struct CFLString
{
CFLObject base;
char * data;
size_t size;
};

此结构在 CFLite.h 中有一个类型定义指针

typedef struct CFLString *      CFLStringRef;

这又是#define-ed in CFCompat.h作为

#include "CFLite.h"
#define CFStringRef CFLStringRef

现在,在本地函数中,我有一个简单的打印语句,其中包括标题 CFCompat.h我会尝试打印成员变量 data 指向的字符串.

MyClass::PrintFunc(){
CFLStringRef inVal;
printf("--- str = %s ",inVal->data) //<--- Compiler error here :
`data` cannot be unresolved.

}

最佳答案

根据您的描述,struct CFLString 的定义位于源文件 CFLite.c 中,而无处可寻。这意味着在该文件之外的任何地方,类型 struct CFLString 都是不完整的,因此它的成员是未知的。

如果要访问结构的成员,其定义必须可用(通常在 header 中)。

关于c++ - 不能取消引用类型定义结构指针的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29670744/

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