的順序如下代碼:GCC發出警告初始化的順序不匹配聲明
class C
{
int a, b;
public:
C()
:b(0), a(0)
{}
};
導致GCC抱怨初始化錯誤的順序。具體來說:
../AppSrc/MainForm.cpp: In constructor 'C::C()':
../AppSrc/MainForm.cpp:51:9: warning: 'C::b' will be initialized after
../AppSrc/MainForm.cpp:51:6: warning: 'int C::a'
這裏有什麼大不了的,爲什麼發牢騷?這並不是說成員之間存在或可能存在相互依存關係。原始人,杜。
哦,我該如何關閉此警告或至少使其不那麼激進?
編輯:有很多方法可以在C++中拍攝自己的腳;成員相互依賴性就是其中之一。我意識到這一點,而且我避免了這一點,就像我會避免空指針解引用一樣。
任意init命令都可以非常安全,就像上面的代碼片段一樣。我對編譯器不滿意,並且無論如何都不承認這種情況並抱怨。我的意思是,它不會抱怨每一個不是立即前面都有空檢查的指針解引用,是嗎?
最簡單也是最穩健的方式來沉默這個特別的警告是把成員和他們的初始化按照相同的順序。 – dasblinkenlight
絕對不是最簡單的,考慮到在不同編譯器/設置下編譯時沒有問題的遺留代碼的數量。 –
修復不正確的代碼總是一件好事,即使代碼只是*稍微*不正確。畢竟,你的公司確實有初級程序員,不是嗎? – dasblinkenlight