我试图从函数返回指向我的结构的指针:
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。
答案 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;