2016-09-08 2 views
-2

Я пытаюсь отобразить некоторые элементы данных (бумага, металл, пластик) из базового класса в производный класс, но вместо этого отображаются значения мусора. Я попытался объявить 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; 
} 
+0

И .. Что вы ожидаете, когда вы читаете данные в один объект, а затем пытаетесь отобразить данные другого? Это похоже на вопрос о том, как напечатать значение мусора после выполнения следующего фрагмента кода: 'int a; int b; cin >> a; cout << b; '. –

+0

У вас есть два разных и разных объекта. 'A' и' B' никак не связаны. –

ответ

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, они являются отдельными, но из того, что я вижу, вы хотите, чтобы они были включены в один объект.