【发布时间】:2011-08-03 19:37:04
【问题描述】:
我有一个 Visual Studio 2008 C++ 应用程序,我在其中创建了一个自定义 streambuf 和流实现。我使用了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
代码运行良好,但我担心编译器会告诉我我所做的工作在某些情况下可能会中断,或者可能是不可移植的。
在这种情况下我可以忽略这一点吗?或者我应该怎么做才能解决我的问题?
【问题讨论】:
-
从不忽略警告。
-
@Tomalak - 你是说给出的代码不正确,我应该改变它吗?如果是这样,怎么做?或者,您是说我应该记住这个警告,因为未来的更改很容易使代码不正确?
-
到目前为止,我还无法确定代码可能不正确/未定义的原因。这并不意味着它不是,而且您的编译器比我更了解该语言。也可能有一个“小心;你的代码很容易因为最轻微的变化而出现严重错误!”因素,这也是不忽略警告的充分理由。它们不只是为了好玩而发出的! [我并不是说您必须更改您的代码;也不要完全忽略警告。某处有一个中间地带。 :)]
标签: c++ stream compiler-warnings