c++指针的问题,我有点晕

2021-01-20 10:23:20 +08:00
 wohenfuyou

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 类有问题?

951 次点击
所在节点    问与答
8 条回复
QBugHunter
2021-01-20 10:38:44 +08:00
能写出这种代码的人也是人此。。。
wohenfuyou
2021-01-20 10:41:30 +08:00
@QBugHunter 好久没写 c++了,指针方面都忘记怎么传了
wutiantong
2021-01-20 10:52:47 +08:00
save an object, not a pointer
wohenfuyou
2021-01-20 11:01:37 +08:00
@wutiantong 可以展开说一下么~
wutiantong
2021-01-20 11:14:31 +08:00
@wohenfuyou 返回裸指针的函数无法延续对象的生命周期,指针传出来了但对象死掉了。
ysc3839
2021-01-20 16:30:56 +08:00
gridModelResponse 是哪来的呢?请给出完整代码。
daimiaopeng
2021-01-21 10:07:26 +08:00
你这掐头去尾的代码我更晕了
wohenfuyou
2021-01-21 10:33:12 +08:00
@ysc3839 gridModelResponse 是局部的 解决了 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/746563

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX