【发布时间】:2020-10-11 09:29:44
【问题描述】:
(OOP 初学者。)
我有一个 person 类,它存储人的姓名。在派生类实例printer 中,我需要该名称,以便可以使用它执行进一步的任务。
#include <iostream>
#include <string>
class Person{
public:
std::string name;
};
class Printer: public Person{
public:
void print(){
printf("%s", this->name.c_str());
}
};
int main() {
Person one;
one.name = "john";
Printer printer;
printer.print();
return 0;
}
我没有做什么让printer 看到one 中的数据?我会有几个类似printer 的对象,所以这里的目标是只存储一次“john”。
【问题讨论】:
-
考虑在
Printer中存储对Person的引用而不是继承。Printer不是Person的类型。 -
@TedLyngmo 介意添加答案吗?更新问题后,您的回答似乎对我有所帮助。 stackoverflow.com/questions/5398540/…
brado86的这个回答没有详细说明。 -
您可以查看此答案中的 CSVStudent 类,该类存储对要打印的对象的引用,并且具有免费的
std::ostream& operator<<(std::ostream&, const CSVStudent/);函数来进行打印。如果您将name设为私有,则需要将其设为friend。
标签: c++ class oop derived-class