我有一個Visual Studio 2008 C++應用程序,我在其中創建了一個自定義流緩衝和流實現。我已經使用Angelika Langer給出的方法來創建流詳述如下:創建自定義標準流實現時的編譯器警告
class MyOutputStream_3 : private MyStreamBuf, public ostream {
public:
MyOutputStream_3() : ostream((MyStreamBuf*) this), ios(0) {};
virtual ~MyOutputStream_3() { sync(); }
// ...
};
但是,Visual Studio中給了我一個warning:
warning C4355: 'this' : used in base member initializer list
的代碼工作正常,但我擔心的編譯器告訴我,我所做的或者在某些情況下可能會中斷,或者可能是不可移植的。
這個事情我可以忽略在這種情況下,或者我應該怎麼做才能解決我的問題?
_Never_忽略警告。 –
@Tomalak - 你說的代碼是不正確的,我應該改變它?如果是這樣,怎麼樣?或者,你是否說我應該記住這個警告,因爲未來的改變很容易使代碼不正確? – PaulH
至今我一直無法確定爲什麼代碼可能不正確/未定義。這並不意味着它不是,而且你的編譯器比我更瞭解該語言。也可能有一個「小心;你的代碼很容易發生絲毫變化的嚴重錯誤!」因素,這也是不能忽視警告的理由。它們不是爲了好玩而發射的! [我並不是說你必須改變你的代碼;只是不要完全忽視警告。有一箇中間地帶。 :)] –