[英]Why am I getting 'uninitialized' warning from g++
編譯Qt c ++程序會產生一個困擾我的編譯器警告。
碼
struct QAE{
QString qsSetname;
QString qsAnswer;
QString qsQuestion;
int index;
};
typedef QHash<int, QAE *> * ptrQAEset;
typedef QHash<int, QAE *> QAEset;
QHash<QString, ptrQAEset> QAESets;
void func() {
ptrQAEset qaeset = QAESets.value(oldSetName, qaeset);
QAESets.remove(oldSetName); //remove association with old set name
QAESets.insert(newSetName, qaeset); //create association with new set name
}
和警告
C:\Qt\5.4\mingw491_32\include\QtCore\qhash.h:205: warning: 'qaeset' may be used uninitialized in this function [-Wmaybe-uninitialized]
: next(n), h(hash), key(key0), value(value0) {}
我顯然正在初始化它。 我不明白這個警告。
謝謝
我認為問題在於第二個參數:
ptrQAEset qaeset = QAESets.value(oldSetName, qaeset);
如果oldSetName
則傳入“qaeset”作為默認值,但這是未初始化的。
ptrQAEset qaeset = QAESets.value(oldSetName, qaeset );
您正在讀取用於初始化同一變量的表達式中的變量值。 因此,編譯器正確地關注它在未初始化時的使用情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.