OOP:cout输出的方法

时间:2015-09-17 11:11:42

标签: c++ cout

我必须创建一个方法,在屏幕上打印所有收集的数据,这是我的尝试:

bool UnPackedFood::printer() {

        cout << " -- Unpacked Products --" << endl;

        cout << "barcode: " << getBarcode() << endl;
        cout << "product name: " << getBezeichnung() << endl << endl;
        cout << "weight: " << getGewicht() << endl;
        cout << "price" << getKilopreis() << endl;

    return true;
}

在我的主要内容:

UnPackedFood upf;
cout << upf.printer();

这显示了正确的输出,但它仍然给我一个bool值,我实际上不需要。我试图将该方法声明为无效,但那不起作用。

2 个答案:

答案 0 :(得分:3)

您应该为输出流重载<<运算符。然后当您输入cout << upf时,它会打印您的产品。

查看this example并尝试执行与以下代码段类似的操作:

class UnPackedFood {   
    ...
    public:
       ...
       friend ostream & operator<< (ostream &out, const UnPackedFood &p);
};

ostream & operator<< (ostream &out, const UnPackedFood &p) {
        out << " -- Unpacked Products --" << endl;
        out << "barcode: " << p.getBarcode() << endl;
        out << "product name: " << p.getBezeichnung() << endl << endl;
        out << "weight: " << p.getGewicht() << endl;
        out << "price" << p.getKilopreis() << endl;
        return out;
}

答案 1 :(得分:2)

三种可能的解决方案:

  1. 不要cout << upf.printer();,因为函数本身会输出,所以不需要输出。

  2. 不是写入printer函数的输出,而是附加到字符串并返回字符串。

  3. operator<<重叠UnPackedFood,这样您就可以std::cout << upf;