C++ 设置类名在另一个类中继承和显示

C++ 设置类名在另一个类中继承和显示,c++,inheritance,C++,Inheritance,为什么我不能设置类名并继承它并在另一个类中显示,如下面给出的代码?我做错了什么 #include<iostream> #include<string> using namespace std; class dealer { string name; public: dealer(){}; dealer(string n): name(n){}; ~dealer(){}; //void setname(string n){name =

为什么我不能设置类名并继承它并在另一个类中显示,如下面给出的代码?我做错了什么

#include<iostream>
#include<string>
using namespace std;
class dealer
{
    string name;
public:
    dealer(){};
    dealer(string n): name(n){};
    ~dealer(){};
    //void setname(string n){name = n;};
    void display(){cout<<name<<endl;}
};
class car : public dealer
{
public:
    dealer b;
    car(){};
    //car(string n): dealer(n){};
    ~car(){};
    void display(){dealer::display();}
}; 
int main ()
{
    dealer a("ABC");
    car c;
    c.display();
}    
#包括
#包括
使用名称空间std;
等级经销商
{
字符串名;
公众:
经销商(){};
交易商(字符串n):名称(n){};
~dealer(){};
//void setname(字符串n){name=n;};

void display(){cout它工作正常。您可以使用
car
默认构造函数初始化
c
,默认构造函数隐式调用
经销商
默认构造函数,默认构造函数不做任何事情。
name
仍然是一个空字符串,这就是打印出来的字符串。要解决此问题:

//car(string n): dealer(n){}; <--- uncomment
car c("ABC"); //initialize like this

您收到了什么错误消息?没有错误,只是没有显示经销商名称,即“ABC”。我猜您确实希望汽车显示ABC?然后需要重新读取继承。然后您将知道汽车的经销商实例是主功能中经销商以外的另一个实例。因此,ABC没有设置在汽车的经销商实例中,因此您无法获得所需的输出。a.display()应该向您显示经销商的名称。c与您创建的对象a无关。我理解,我的问题是。如何使第二个类的两个类之间的关系显示经销商类的名称。如何解决此问题?我不希望在汽车类中设置经销商的名称。我想设置经销商的名称经销商类别中的经销商。如果我在汽车类别中设置经销商的名称,它会起作用,但不是相反。在这种情况下,如何在主功能中使用步骤“经销商a(“ABC”);?
经销商a(“ABC”);汽车c(a)
class dealer { ... };
class car
{
    dealer &d;
    car(dealer &nd): d(nd) { };
    void display(){ d.display();}
}