从函数返回指向结构的指针

时间:2012-10-08 04:38:04

标签: c++

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

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。

1 个答案:

答案 0 :(得分: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;