过载运算符>>和“使用”

时间:2013-07-05 10:29:45

标签: c++ stringstream

我有这段代码:

class myistringstream : public std::istringstream
{
public:
   using std::istringstream::operator>>;

   myistringstream (const std::string &str): std::istringstream(str)
   {
   }

   myistringstream& operator >> (unsigned char& _MyChar)
   {
      int temp;
      // my stuff here with temp and _MyChar ... 

      std::istringstream::operator>> (temp);
      _MyChar = static_cast<unsigned char> (temp);
      return *this;
   }
};

这个用法: file:myCpp.cpp

54:    unsigned char myUnsignedChar;
55:    int myIntVar;
56:    myistringstream ss (myStr);
57:    ss >> myIntVar;        //
58:    ss >> myUnsignedChar;

我想要的是&gt;&gt;的特定实现指定大小写的运算符(unsigned char)!好消息是在Visual Studio(2008年,2010年)上完美运行!

但不适用于Borland C ++!它给了我这个警告

[C ++警告] myCpp.cpp(57):W8030临时用于参数'_MyChar'调用'myistringstream :: operator&gt;&gt;(unsigned char&amp;)'

我意识到我没有“看到”所有其他“&gt;&gt;”实现(对于另一种类型)基类(istringstream),即使我使用了使用std :: istringstream :: operator&gt;&gt ;;指令!

再次在VS上完美运作.... 你看错了什么/错误吗?

TIA: - )

0 个答案:

没有答案