首页 > 解决方案 > 继承的类如何看到属于被继承类的数据成员的相同值

问题描述

在继承的类中,我无法获得属于被继承类的非静态数据成员的相同值。

我试着在这里寻找与我的问题类似的实例,但我发现了一些,但由于我对类/继承的了解不足,我很难正确解释响应。

我将尝试举一个我创建的示例,以便我有更好的机会掌握未来的解释/方法。

//类#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++classinheritance

解决方案


推荐阅读