【发布时间】:2016-07-25 15:55:45
【问题描述】:
我确信对此有一个简单的解释,但我有一些这样的代码:
RoutingTablePoolEntry rtpe;
RoutingTablePoolEntry* rtpePtr;
if (rtpeItr == m_rtpool.end()) {
RoutingTableEntry* routeEntryPtr = m_nlsr.getRoutingTable()
.findRoutingTableEntry(destRouter);
if (routeEntryPtr == nullptr) {
RoutingTablePoolEntry rtpe(destRouter);
}
else {
RoutingTablePoolEntry rtpe(*routeEntryPtr);
}
RoutingTablePoolEntry* rtpePtr = addRtpeToPool(rtpe);
}
else {
RoutingTablePoolEntry* rtpePtr = &(rtpeItr->second);
}
doSomeStuffWithRtpe()
编辑:这是一些真实的代码。错误仍然是可变范围吗?我在示例中意识到它是,但这仍然是问题吗?我尝试了表单的条件初始化:
RoutingTablePoolEntry rtpe(routeEntryPtr == nullptr? ... : ...); 但这似乎也没有太多合作。
编辑#2:我是个白痴,对不起。原因很清楚,只是我没有看到。
rtpe = RoutingTablePoolEntry(destRouter) 和
rtpePtr = &(rtpeItr->second)
任何人都会犯这种错误的可能性很小。
【问题讨论】:
-
请发帖Minimal, Complete, and Verifiable example。请注意,
doThing不会在您的代码中看到任何object声明,因为它们超出了范围。
标签: c++ compilation compiler-warnings