1

我有这段代码:

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;
   }
};

这是我的用法:文件:myCpp.cpp

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

我想要的是特定情况下 >> 运算符的特定实现(无符号字符)!好消息是它在 Visual Studio (2008, 2010) 上完美运行!

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

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

我意识到我没有“看到”基类(istringstream)的所有其他“>>”实现(对于其他类型),即使我使用了 using std::istringstream::operator>>; 指示!

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

TIA :-)

4

0 回答 0