【问题标题】:Parameter transfer with cin function [duplicate]cin函数的参数传递[重复]
【发布时间】:2015-12-13 03:24:25
【问题描述】:

我希望用户能够一个接一个地输入 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;
}

【问题讨论】:

  • 哦,对不起。感谢您的推荐。

标签: c++ methods parameters cin


【解决方案1】:

未指定函数参数的求值顺序,因此这些readColor 调用可以以任何顺序发生。一个简单的解决方法是使顺序明确:

int r,g,b;
std::cin >> r >> g >> b;
c.setColor(r,g,b);

另一种可能性是将operator&gt;&gt; 重载为RGB_Color(如果成员数据是私有的,则使其成为friend):

std::istream& operator>> (std::istream& is, RGB_Color& color) {
    is >> color.red >> color.green >> color.blue;
    return is;
}

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 2022-01-26
    • 1970-01-01
    • 2014-01-22
    • 2013-08-13
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    相关资源
    最近更新 更多