Ich bin sicher, dass dies eine einfache Erklärung gibt es, aber ich habe einige Code wie folgt aus:C++ Compiler gibt unitialized Warnungen Variable, wenn erklärt in if-else-Anweisungen
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()
EDIT: Hier ist einige echte Code. Ist der Fehler noch variabel? Ich erkenne es im Beispiel, aber ist das immer noch das Problem hier? Ich versuchte bedingte Initialisierung des Formulars: RoutingTablePoolEntry rtpe(routeEntryPtr == nullptr? ... : ...);
, aber das schien auch nicht zu viel zusammenzuarbeiten.
EDIT # 2: Ich bin ein Idiot, Entschuldigung. Der Grund ist sehr klar und ich sah es einfach nicht.
rtpe = RoutingTablePoolEntry(destRouter)
und rtpePtr = &(rtpeItr->second)
in der schlanken Chance jemanden machen diesen Gaffel auch.
Bitte veröffentlichen Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). Beachten Sie, dass "doThing" keines der Objekte in Ihrem Code deklariert, da sie außerhalb des Bereichs liegen. – MikeCAT