首页 > 解决方案 > C ++将数据从A类的对象传递给派生类B的对象

问题描述

对于下面的示例代码,我正在尝试将数据从类的对象传递(或属性,如果它更适合您)A到派生类的对象B。到目前为止我不明白的是如何将数据从父类对象传输到派生类对象。

下面的“代码”表达了我是如何尝试这样做的。

class Foo {
protected:
    string Name, Surname;

public:
    void readData()
    {
        cin >> Name >> Surname >> ;
    }
}

class Bar : public Foo {
public:
    Bar(Foo a)
    {
        Name = Name;
        Surname = Surname;
    }
    void printData()
    {
        //code
    }
}

int
main()
{
    Foo a;
    a.readData();
    Bar b(a);
    b.printData()
}

标签: c++classinheritance

解决方案


使您的代码编译的最小更改是使用Foo复制构造函数并简单地访问继承的成员Bar::printData

#include <string>
#include <iostream>

class Foo{
 protected:
 std::string Name, Surname;
 public:
 void readData()
 {
  std::cin >> Name >> Surname;
 } 
 };

class Bar : public Foo
{
 public:
 Bar (const Foo& a) : Foo(a) {  }
 void printData()
 {
    std::cout << Name << " " << Surname;
 }
};

int main()
{
 Foo a;
 a.readData();
 Bar b(a);
 b.printData();
}

推荐阅读