2015-09-17 3 views
0

Я должен создать метод, который печатает все собранные данные на экране, вот моя попытка:ООП: Метод для вывода соиЬ

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, которое мне действительно не нужно. Я пытался объявить метод как пустое, но это не работает.

+0

Вы пробовали 'upf.printer()' вместо 'соиЬ << upf.printer();'? –

ответ

2

три возможных решения:

  1. Не делайте cout << upf.printer();, выход не требуется, так как сама функция делает вывод.

  2. Вместо записи на выход в функции printer добавьте строку и верните строку.

  3. Сделать перегруженный operator<< для UnPackedFood, так что вы можете просто сделать std::cout << upf;

+2

Я бы не предложил построить строку. Вместо этого я бы предложил передать поток. Таким образом, вы можете использовать 'upf.printer (cout);' или: 'stringsteam s; upf.printer (s); 'и использовать' s.str() 'для использования строки для других средств. – JArkinstall

+0

U правильные, спасибо за разъяснения. – Matej

+0

@JArkinstall Это был бы достойный ответ, если бы вы разместили его как один (конечно, немного более полный, чем комментарий). :) –

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; 
} 
+0

Я могу использовать это в методе printer(),? Поскольку задача заключалась в том, чтобы распечатать продукты в методе printer(). – Matej

+0

В этом случае просто верните 'string' из' printer() 'или не используйте текущую реализацию с' cout'. – janisz