我试图从函数返回指向我的结构的指针:

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/

10-12 20:35