2016-10-16 3 views
-1

Наш учитель сказал нам создать вектор объектов и выполнить над ним операции, но я не мог понять, как правильно это сделать: я попытался создать простой проект с минимальными данными, чтобы я мог знать, что я делаю.Как добавить элементы в вектор объектов и распечатать их?

У меня есть этот класс

class Obj { 

    private: 

     int num; 

    public: 

     Obj(); 

     void setNum(int nuovo_num); 
     int getNum(); 

}; 

А потом этот, с вектором Obj

class VettObj{ 

    private: 

     vector<Obj> vett; 

    public: 

     VettObj(); 

     void setVett(); 
     void stampaVett(); 

}; 

Моя первая мысль была использовать итератор, но я был просто сделать полный беспорядок и, с почти бесполезными исследованиями, я решил использовать общий счетчик целых чисел.

Я обнаружил, что ничего не должен писать в калькуляторе затрат VettObj, поскольку он автоматически инициализирует материал, поэтому я оставил его пустым.

Метод, который добавляет элементы это

void VettObj::setVett(){ 


    Obj temp; 
    int i; 

    i = 0; 
    while(i < 5){ 


     temp.setNum(10); 

     vett.push_back(temp); 

     i++; 
    } 

} 

И один, который печатает элементы

void VettObj::stampaVett(){ 


    int i; 

    i = 0; 
    while(i < 5){ 

     vett[i].getNum(); 

     i++; 
    } 

} 

Когда я компилирую, все идет хорошо, но когда я запускаю программу, которую я не получаю ничего на экран. Я не хочу использовать в основном векторные функции (если не нужно), поскольку я видел, что многие люди могут это делать так. Мне бы очень хотелось узнать, как это сделать с помощью итераторов. Помощь pls ????

+0

Правильный инструмент для решения таких проблем - ваш отладчик. Перед тем, как просить о переполнении стека, вы должны пропустить свой код по очереди *. Для получения дополнительной информации, пожалуйста, прочтите [Как отлаживать небольшие программы (Эрик Липперт)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Как минимум, вы должны \ [изменить] ваш вопрос, чтобы включить пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve), который воспроизводит вашу проблему, а также замечания, сделанные вами в отладчик. –

+0

Задайте ** конкретный вопрос **. Детальная история происхождения вашей программы не имеет ничего общего с чем-либо. –

+0

, вероятно, вы должны начать с «Hello World». Почему, по вашему мнению, в вашей программе все будет напечатано на экране? Он не волшебным образом читает ваш разум и делает то, что вы хотите. – user463035818

ответ

0

На самом деле вы ничего не печатаете в методе stampaVett(). Вы можете попробовать с:

void VettObj::stampaVett(){ 

    int i = 0; 

    while (i < 5){ 

     std::cout << vett[i].getNum(); 

     i++; 
    } 

} 

Я также предлагаю использовать английский язык для метода или переменного вместо итальянского, так как SO является международным сообществом.

+0

Да, вот и все: в итоге, проведенное мной исследование не было бесполезным. Спасибо. – AlbyTree

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