C++ C++;在具有2d数组的对象上重载istream运算符-无法绑定错误
嘿,我一直在我的istream重载函数中遇到这个错误:C++ C++;在具有2d数组的对象上重载istream运算符-无法绑定错误,c++,operator-overloading,overloading,istream,C++,Operator Overloading,Overloading,Istream,嘿,我一直在我的istream重载函数中遇到这个错误: ColorBlob.cpp: In function 'std::istream& operator>>(std::istream&, ColorBlob&)': ColorBlob.cpp:204:17: error: cannot bind 'std::istream {aka std::basic_istream<char>}' lvalue to 'std::basic_istream
ColorBlob.cpp: In function 'std::istream& operator>>(std::istream&, ColorBlob&)':
ColorBlob.cpp:204:17: error: cannot bind 'std::istream {aka std::basic_istream<char>}' lvalue to 'std::basic_istream<char>&&'
In file included from c:\program files (x86)\codeblocks\mingw\bin\../lib/gcc/min
gw32/4.7.1/include/c++/iostream:41:0,
from Color.h:14,
from ColorBlob.h:13,
from ColorBlob.cpp:11:
c:\program files (x86)\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++
/istream:866:5: error: initializing argument 1 of 'std::basic_istream<_CharT,
_Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&&, _Tp&) [with _Ch
arT = char; _Traits = std::char_traits<char>; _Tp = Color**]'"
ColorBlob.cpp:在函数“std::istream&operator>>(std::istream&,ColorBlob&)”中:
ColorBlob.cpp:204:17:错误:无法将'std::istream{aka std::basic_istream}'左值绑定到'std::basic_istream&'
在c:\program files(x86)\codeblocks\mingw\bin\../lib/gcc/min中包含的文件中
gw32/4.7.1/include/c++/iostream:41:0,
从颜色。h:14,
从ColorBlob.h:13,
来自ColorBlob.cpp:11:
c:\ProgramFiles(x86)\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++
/istream:866:5:错误:初始化'std::basic_istream&std::operator>>(std::basic_istream&,_Tp&)[带有
arT=char;_Traits=std::char_Traits;_Tp=Color**]”
我的职能定义如下:
istream& operator>>(istream& istrm, ColorBlob& CB){
double red,blue,green;
cout << "Enter red value";
cin >> red;
cout << "Enter green value";
cin >> green;
cout << "Enter blue value";
cin >> blue;
CB.setColor(Color(red, green, blue));
istrm >> CB.width;
istrm >> CB.height;
istrm >> CB.data;
return istrm;
}
istream和operator>>(istream和istrm、ColorBlob和CB){
重瓣红色、蓝色、绿色;
红色;
绿色;
蓝色;
CB.setColor(颜色(红、绿、蓝));
istrm>>CB.width;
istrm>>CB高度;
istrm>>CB.data;
返回istrm;
}
错误发生在“istrm>>CB.data”上,但它正在调整宽度和高度
ColorBlob->data是一个动态的2D颜色数组。如果我理解正确,您正在尝试调用
istream&operator>(istream&istrm,ColorBlob&CB)
关于两个参数istream
和Color**
。这不好。你为istream&
和colorbob&
定义了这个操作符,而不是为istream&
和Color**
,谢谢你的回答。我想我对这个函数应该如何工作感到非常困惑。我得到了c主要与“cin>>ColorBlobObject”一起使用;函数定义“istream&operator>>(istream&istrm,ColorBlob&CB)”和am应该获取颜色输入以更改ColorBlob对象的颜色。重载istream&operator>>(istream&istrm,ColorBlob&CB)
工作正常。但这样看:您想将一些数据从ISTR
传输到指向Color
的指针。编译器怎么知道您的确切意思呢?因为编译器Color**
基本上是一个int
(这当然过于简单了,但现在已经足够了)所以编译器无法知道如何执行您希望它执行的操作。