比方說,我有一個代表一個人的一類:C++:在顯示一些數據避免干將
class Person {
string name;
int age;
}
我想用類Printer
class Printer {
public:
void print(string toPrint) { cout << toPrint << endl; }
}
哪個顯示約人在屏幕上的信息以下方法是更好的做法:
將吸氣劑添加到
Person
,然後打電話給他們從外部(例如main
法):要干將添加到
Person
但(通過重載print
法)從Printer
叫他們printerInstance.print(personInstance); // ... Printer::print(Person person) { print(person.getName + ", " + person.getAge); }
爲了使
Person
取決於Printer
(我們正在避免getter
)並致電:personInstance.print(printerInstance); // ... Person::print(Printer printer) { printer.print(getName + ", " + getAge); }
一個抽象層次超出你的實際問題:重載的<< <<操作符不會是解決這個問題的更「慣用」的方式嗎? – Marco13
@ Marco13如果顯示數據爲「cout」的限制 - 是的。但在我的問題中,這僅僅是一個例子,我想找到的答案不僅適用於在控制檯中打印,而且也適用於在GUI中顯示數據。 –
然後又一個(第4個)選項(來自Java傢伙;-)):您可能會考慮提供一個'toString'方法(或者,如果您願意:'to_string'),它只會返回對象的「合理」字符串表示,而不會明確暴露課程的內部細節。 – Marco13