我有这段代码:
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: - )