将数据成员从基类显示到派生类

时间:2016-09-08 11:20:36

标签: c++

我试图将一些数据成员(纸张,金属,塑料)从基类显示到派生类,但是显示的是垃圾值。我尝试在派生类中声明Material obj然后使用像obj.paper / obj.metal这样的对象来调用它们,但它不起作用。如何纠正这个?

#include <iostream>
using namespace std;

class Material
{
    public:
        float paper, metal, plastic;
    public:
    void set_data()
    {
        cout<<"\t\tPaper         : ";
        cin>>paper;
        cout<<"\t\tMetal         : ";
        cin>>metal;
        cout<<"\t\tPlastics      : ";
        cin>>plastic;
    }
};
class Contributor : public Material
{
    public :
        string name, cname;
    public:
        void display(string x, string y)
        {
            name=x; cname=y;
            cout<<"\t"<<x<<"\t"<<y<<"\t"<<paper<<"\t"<<metal<<"\t"<<plastic<<"\t"<<endl;
        }
};
int main()    
{
    Material A;
    Contributor B;
    string name, cname;
    cout<<"Enter name            : ";
    getline(cin, name);
    cout<<"Enter company name    : ";
    getline(cin, cname);
    A.set_data();
    B.display(name, cname);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

试试这个:

int main()    
{
    Contributor B;
    string name, cname;
    cout<<"Enter name            : ";
    getline(cin, name);
    cout<<"Enter company name    : ";
    getline(cin, cname);
    B.set_data();
    B.display(name, cname);
    return 0;
}

您需要阅读一些C ++书籍并了解继承是什么以及为什么要这样做。当你继承一个类(我们称之为基类)时,它包含在使用它的类中(我们称之为派生类)。

因此,当您为Contributor创建材质对象和另一个对象时,这些是独立的,但从我看到的情况来看,您希望它们包含在一个对象中。