C++ 如何呼叫接线员<&书信电报;关于;这";在std::stringstream的后代中? classmystream:public std::stringstream { 公众: 空写东西 { 此

C++ 如何呼叫接线员<&书信电报;关于;这";在std::stringstream的后代中? classmystream:public std::stringstream { 公众: 空写东西 { 此,c++,visual-c++,visual-studio-2010,stl,C++,Visual C++,Visual Studio 2010,Stl,mystream*const表示此是指向非常量对象的常量指针。问题是您试图将流插入指针中--必须插入流。请尝试以下操作 error C2297: '<<' : illegal, right operand has type 'const char [10]' error C2296: '<<' : illegal, left operand has type 'mystream *const ' *此mystream*const意味着此是指向非常量对象的常量指针。问题是

mystream*const
表示
是指向非常量对象的常量指针。问题是您试图将流插入指针中--必须插入流。请尝试以下操作

error C2297: '<<' : illegal, right operand has type 'const char [10]'
error C2296: '<<' : illegal, left operand has type 'mystream *const '

*此
mystream*const
意味着
是指向非常量对象的常量指针。问题是您试图将插入流插入指针中--必须插入流。请尝试以下操作

error C2297: '<<' : illegal, right operand has type 'const char [10]'
error C2296: '<<' : illegal, left operand has type 'mystream *const '

<代码> *>这是一个StrueFig的析构函数(实际上是 Basic StrugStuts)不是虚拟的,并且从C++ SL中的所有类,你都不应该从它们派生出来……/P>
取决于您到底想做什么,我会告诉您更喜欢组合而不是继承,并可能创建您自己的templated>操作符来使用您的底层流。或者更明智的做法是不使用stringstream作为成员。

stringstream的析构函数(实际上是
基本的\u stringstream
)不是虚拟的,并且从C++ SL中的所有类,你都不应该从它们派生……/P>
取决于您到底想做什么,我会告诉您更喜欢组合而不是继承,并可能创建您自己的templated>操作符来使用您的底层流。或者,不使用stringstream作为成员可能更明智。

我的灵感来源于它,它有足够的票数让我认为这种派生是可以接受的。我不过,我也发现遵循了你的建议。因为这个聪明的把戏实际上不起作用,你可能会遇到一些问题:)试试
my_macro Nikko对my_macro的看法是正确的。它会创建my_stream的匿名实例,这个实例只对操作员有效,因为析构函数不是虚拟的。如果你或者其他任何人试图以病毒方式破坏我的流。即std::stringstream*stream=new mystream;(*stream)为此,使用委托更安全,请参见我对类似问题的回答,该问题绕过了我从中获得灵感的
my_宏,它有足够的票数让我认为这种推导是可以接受的。不过,我也发现遵循您的建议。因为这种巧妙的技巧并不真正有效,您可能会遇到一些问题:)试试
my_macro Nikko对my_macro的看法是正确的。它创建了my_stream的匿名实例,该实例仅适用于运算符,因为析构函数不是虚拟的。只有当您或其他任何人试图以虚拟方式破坏my_stream时,这才是一个问题。即std::stringstream*stream=new mystream;(*stream)使用委托更安全,请参见我对
my_宏中类似问题的回答
*this << "something";