Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;在具有2d数组的对象上重载istream运算符-无法绑定错误_C++_Operator Overloading_Overloading_Istream - Fatal编程技术网

C++ C++;在具有2d数组的对象上重载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

嘿,我一直在我的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
(这当然过于简单了,但现在已经足够了)所以编译器无法知道如何执行您希望它执行的操作。