2014-01-22 2 views
0

Я хочу использовать массив объектов (в файле data.h) в файле user.h .i пробовал эту вещь, как показано ниже, но мой попробуйте не удается. Мне нужна помощь от вас, ребята. Что-то не так в моем скрипте. пожалуйста, поправьте меняКак использовать вектор для определения массива объектов одного класса в другой класс в другом файле

// data.h файл

class data 
{ 
    private: 
     int id; 
     char name; 

    public: 
     data();  
     int getid() 

      { 
       return id; 
      } 

     void setid(int id) 
      { 
       id = id; 
      } 

     char getname() 

      { 
       return name; 
      } 

     void setname(char name) 
      { 
       name=name; 
      } 
    }; 

//data.cpp файл

data::data(){ 

     int xyz; 
     char pqr; 
     data firstobject; 
     firstobject.setid(10); 
     xyz=firstobject.getid(); 
     firstobject.setname(hello); 
     pqr=firstname.getname(); 
     return 0; 
    } 

//user.h файл

class user 
{ 
    private: 


     vector<data> data11; 
    public: 
     user(); 

     void add_element(int a) 
     { 
      data11.push_back(a); 
     } 

     void get_element() 
     { 
      for(int x=0; x<data11size(); x++) 
      { 
       cout<<data11[x]<<" \n"; 
      }; 
      cout<<" \n"; 
     } 

}; 

// пользователь. cpp file

user::user() 
{ user object; 
    object.add_element(xyz); 
    object.get_element(); 
} 
+1

Там очень много плохого кода: в 'add_element' вы пытаетесь добавить' int' в '' вектор , который не будет работать , 'data' имеет частный конструктор, поэтому его нельзя создать в первую очередь. 'setid' присваивает' id' себе (вы, возможно, означали 'this-> id = id'),' name' имеет ту же проблему. 'data :: data()' использует переменную с именем 'hello', которая не определена. etc etc – Sean

+0

МЫ хотим услышать от вас, что случилось? (Не компилируется? Не работает? Не делает того, что ожидается?) – zoska

ответ

0

Это ваш constructor и определяется как private? Если вы не имеете какой-либо конкретной причины, переместить его public:

data(); 

То же самое с user()

Edit: Есть много других вещей .. объяснить, что проблема вы столкнулись именно

+0

да, это моя ошибка, я переведу его публично. Можете ли вы помочь мне решить мою проблему? – user3213849

+0

да, упоминание о том, какая у вас проблема .. мы постараемся сходиться .. –

0

ли те, полный файлы? Конечно, вы должны

#include "data.h" 

в user.h

+0

да я включил файл data.h .my файл не может скомпилировать – user3213849

+0

как насчет предоставления сообщения об ошибке компилятора? –

+0

Есть еще несколько проблем: - Конструктор никогда не возвращает значение, поэтому удалите это return 0; - Вы не можете выделить другой объект данных внутри конструктора. Это вызовет бесконечную рекурсию (и я даже не знаю, будет ли она компилироваться) –

Смежные вопросы