我试图从函数返回指向我的结构的指针:
dbentry* FileReader::parseTrack(int32_t size, char *buffer) {
dbentry* track;
int cursor = 0;
//parse relevant parts
track.title = this->getFieldForMarker(cursor, size, "tsng" , buffer);
return track;
}
设置标题显然是行不通的,但是我不知道该怎么办,我也该如何从指针中读取一个值,香港专业教育学院尝试了一些强制转换,但似乎无济于事,大部分我发现我不知道如何申请,或者是C。
最佳答案
您没有分配结构内存,因此您没有访问也不返回任何内存地址。您将需要以下内容:
dbentry* FileReader::parseTrack(int32_t size, char *buffer)
{
dbentry* track = new dbentry;
int cursor = 0;
//parse relevant parts
track->title = this->getFieldForMarker(cursor, size, "tsng" , buffer);
return track;
}
请注意,您必须返回结构指针,因此您不想在返回时取消引用该指针,因此只需使用
return track;
而不是return *track;
即可。原因是轨道已经是一个指针。您将在原始解决方案中返回指针的指针。
因此,您将使用如下功能:
dbentry* test = something->parseTrack(size, buffer);
std::cout << test->title;
delete test;
关于c++ - 从函数返回指向结构的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12775409/