c++ - 继承的类如何看到属于被继承类的数据成员的相同值
问题描述
在继承的类中,我无法获得属于被继承类的非静态数据成员的相同值。
我试着在这里寻找与我的问题类似的实例,但我发现了一些,但由于我对类/继承的了解不足,我很难正确解释响应。
我将尝试举一个我创建的示例,以便我有更好的机会掌握未来的解释/方法。
//类#1头文件:
class customer {
public:
String customer_bike = “Honda”;
customer();
void what_bike()
}
//类#1源文件:
#include “customer.h”
customer:: customer(){
}
void customer::what_bike(){
Serial.print(“customer owns a “);
Serial.println(customer_bike);
}
//类#2头文件:
#include “customer.h”
class dealer : public customer {
public:
dealer();
customer customer;
void sell_ducati();
}
//类#2源文件:
#include “dealer.h”
dealer::dealer(){
}
void dealer::sell_ducati(){
customer.customer_bike = “Ducati”;
}
//主程序:
#include “customer.h”
#include “dealer.h”
customer customer;
dealer dealer;
Void setup(){
Serial.begin(115200);
}
Void loop(){
customer.what_bike();
delay(2000);
dealer.sell_ducati();
customer.what_bike();
while(1);
}
如何在一个实例中修改数据成员并让它反映在另一个实例中?如果做不到,什么方法是好的选择?
我希望代码保持一些易于移植性,例如从 cpp 到 c 简而言之我不想使用 cpp 标准库中的任何东西
更新:现在解决了我的问题我想知道如何让#3 类读取相同的值“customer_bike”被修改。
第 3 类头文件:
#include “customer.h”</p>
class phone : public customer{
public:
phone();
void broadcast();
}
//类#3源文件:
#include “phone.h”
phone::phone(){
}
void phone::broadcast(){
//broadcast here
Serial.print(“hello world I bought a “);
Serial.println(customer.customer_bike); // << I want this to print Ducati
}
//更新主程序:
#include “phone.h”
#include “dealer.h”
phone phone;
dealer dealer;
Void setup(){
Serial.begin(115200);
}
Void loop(){
dealer.customer.what_bike();
delay(2000);
dealer.sell_ducati();
dealer.customer.what_bike();
phone.broadcast();
while(1);
}
解决方案
推荐阅读
- c# - .net core WebAPI 运行 cli 命令
- mysql - SQL 数据库用 0 而不是 null 填充字段
- javascript - 在 bigbluebutton 中预上传幻灯片
- python - Django 的密码重置链接能工作多久?
- javascript - 如何将脚本标签注入标题?
- java - 在子类中继承产生空值
- android - 为什么 onFocusChangeListener 仅在单击顶部按钮时有效 - Android
- apache-camel - Camel - 基于消息的特定异常处理处理
- docker - 使用 Docker Compose 时无法使用 GitBash 执行到容器中
- vue.js - Vue.js 错误 6:1 错误 Prefer default export import/prefer-default-export