1

我正在尝试从函数返回指向我的结构的指针:

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。

4

1 回答 1

4

您没有分配结构内存,因此您没有访问和返回内存地址。你需要这样的东西:

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;.

这样做的原因是 track 已经是一个指针。您将在原始解决方案中返回指针的指针。

所以你会使用这样的函数:

dbentry* test = something->parseTrack(size, buffer);
std::cout << test->title;
delete test;
于 2012-10-08T04:43:10.527 回答