我希望用户能够一个接一个地输入RGB颜色,我尽量保持代码简单。下面的代码工作,没有错误,但我不明白为什么它不正确的顺序R> G> B,第一个输入的值在这种情况下是蓝色,这是不需要的。
cout << "Enter successively red-, green, blue-part: " << endl;
c.setColor(readColor(cin), readColor(cin), readColor(cin));
定义了setColor:
void RGB_Color::setColor(int red, int green, int blue) {
this->red = red;
this->green = green;
this->blue = blue;
readColor函数:
int readColor(istream &stream)
{
int i;
stream >> i;
return i;
}
答案 0 :(得分:0)
函数参数的评估顺序未指定,因此readColor
次调用可以按任何顺序发生。一个简单的解决方法是明确订单:
int r,g,b;
std::cin >> r >> g >> b;
c.setColor(r,g,b);
另一种可能性是为operator>>
重载RGB_Color
(如果成员数据是私有的话,将其设为friend
):
std::istream& operator>> (std::istream& is, RGB_Color& color) {
is >> color.red >> color.green >> color.blue;
return is;
}