簡體   English   中英

我為什么要從g ++中收到“未初始化”的警告

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM