PowerGridModel::GridModelArea* readMessageFile()
{
//只看这部分就行了,返回的是 protobuf 类的指针<br>
PowerGridModel::GridModelArea* area_rec = gridModelResponse.mutable_divinfo(4);<br>
cout << area_rec->id().id1() << endl;<br>
cout << area_rec->name() << endl;<br>
cout << area_rec->level() << endl;<br>
return area_rec;<br>
}
int main()
{
PowerGridModel::GridModelArea* rec = readMessageFile();
cout << rec->id().id1() << endl;
cout << rec->name() << endl;
cout << rec->level() << endl;
}
打印信息:
101
辽宁沈阳
1005
101
1005
中间的 name 第二次打印为什么打不出来呢,是我指针用的有问题,还是 protobuf 类有问题?
1
QBugHunter 2021-01-20 10:38:44 +08:00
能写出这种代码的人也是人此。。。
|
2
wohenfuyou OP @QBugHunter 好久没写 c++了,指针方面都忘记怎么传了
|
3
wutiantong 2021-01-20 10:52:47 +08:00
save an object, not a pointer
|
4
wohenfuyou OP @wutiantong 可以展开说一下么~
|
5
wutiantong 2021-01-20 11:14:31 +08:00
@wohenfuyou 返回裸指针的函数无法延续对象的生命周期,指针传出来了但对象死掉了。
|
6
ysc3839 2021-01-20 16:30:56 +08:00
gridModelResponse 是哪来的呢?请给出完整代码。
|
7
daimiaopeng 2021-01-21 10:07:26 +08:00
你这掐头去尾的代码我更晕了
|
8
wohenfuyou OP @ysc3839 gridModelResponse 是局部的 解决了 谢谢
|