Visual Studio 2008 C++アプリケーションを使用して、カスタムstreambufとストリームのインプリメンテーションを作成しました。私は、以下の詳細な流れを作成するためのAngelika Langerによって与えられたアプローチを使用しました:カスタムstdストリームのインプリメンテーションを作成するときのコンパイラの警告
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
まだ私はコードが間違った/未定義であるかもしれない理由を特定することができませんでした。それはそうではないことを意味するわけではなく、あなたのコンパイラは私よりも言語をよく知っています。また、「注意してください;あなたのコードは、わずかな変更でひどく間違って変わる可能性があります!また、警告を無視しないほどの理由もあります。彼らはただの楽しみのために放出されません! [あなたのコードを変更しなければならないと言っているわけではありません。どちらも警告を完全に無視しないでください。どこかに中盤があります。 :)] –