Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для Horia
0 / 0 / 2
Регистрация: 15.01.2015
Сообщений: 66

Std::vector, проблемы с добавлением

18.04.2018, 22:21. Показов 2370. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил через вектор реализовать добавление вариаций в программе ( Book::Add() ). Но компилятор плачется постоянно. Понять не могу, где накосячил. Пожалуйста, помогите поправить.

Компилятор: g++ (GCC) 7.3.1 20180312

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[liem@liem-pc bl]$ clear && g++ -Wall main.cpp classes.cpp -o main
 
classes.cpp: В функции-члене «void Book::Add()»:
classes.cpp:55:24: ошибка: no matching function for call to «std::vector<Variant>::push_back()»
       vector.push_back();
                        ^
In file included from /usr/include/c++/7.3.1/vector:64:0,
                 from classes.cpp:3:
/usr/include/c++/7.3.1/bits/stl_vector.h:939:7: замечание: candidate: void std::vector<_Tp, _Alloc>::push_back(const value_type&) [с _Tp = Variant; _Alloc = std::allocator<Variant>; std::vector<_Tp, _Alloc>::value_type = Variant]
       push_back(const value_type& __x)
       ^~~~~~~~~
/usr/include/c++/7.3.1/bits/stl_vector.h:939:7: замечание:   кандидат ожидает 1 аргумент, 0 предоставлено
/usr/include/c++/7.3.1/bits/stl_vector.h:953:7: замечание: candidate: void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [с _Tp = Variant; _Alloc = std::allocator<Variant>; std::vector<_Tp, _Alloc>::value_type = Variant]
       push_back(value_type&& __x)
       ^~~~~~~~~
/usr/include/c++/7.3.1/bits/stl_vector.h:953:7: замечание:   кандидат ожидает 1 аргумент, 0 предоставлено
classes.cpp:56:14: ошибка: «class std::vector<Variant>» has no member named «Add»
       vector.Add();
Добавлено через 6 минут
Прошу прощения, файлы не захотели грузиться.

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <vector>
#include "classes.hpp"
 
 
void menu(Book book){
   int item{0};
 
   std::cout << "[Главное меню]" << std::endl;
   std::cout << " 1. Отобразить список книг: " << std::endl;
   std::cout << " 2. Добавить книгу" << std::endl;
   std::cout << " 3. Удалить книгу" << std::endl;
   std::cout << " 4. Редактировать описание книги" << std::endl;
 
   std::cout << std::endl << ": ";
   std::cin >> item;
 
   switch (item)
   {
      case 1:
         book.Print();
         break;
      case 2:
         book.Add();
         break;
      case 3:
         std::cout << std::endl << "Книга удалена" << std::endl;
         break;
      case 4:
         std::cout << std::endl << "Описание отредактировано" << std::endl;
         break;
   }
}
 
 
int main()
{
   Book book;
   menu(book);
   return 0;
}

classes.hpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <string>
#include <vector>
 
 
// Класс для различных вариаций одной и той же книги (переводов)
class Variant
{
public:
   Variant();
   ~Variant();
   void Initialize();
   void Save();
   void Add();
   void Change();
   void Print();
   void Delete();
private:
   std::string language;   // Язык
   std::string title;      // Название
};
 
 
class Book
{
public:
   Book();
   ~Book();
   void Initialize();
   void Save();
   void Add();
   void Change();
   void Print();
   void Delete();
private:
   int year;                     // Год издания оригинала
   std::string group;
   std::vector<Variant> vector;
};

classes.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <string>
#include <vector>
#include "classes.hpp"
 
 
Variant::Variant(){
   language = "";
   title = "";
}
Variant::~Variant(){
 
}
void Variant::Initialize(){
 
}
void Variant::Save(){
 
}
void Variant::Add(){
   std::cout << "Введите язык книги: ";  std::cin >> language;
   std::cout << "Введите название на выбранном языке: ";  std::cin >> title;
}
void Variant::Change(){
 
}
void Variant::Print(){
 
}
void Variant::Delete(){
 
}
 
 
Book::Book(){
   year = 0;
   group = "";
}
Book::~Book(){
}
void Book::Initialize(){
 
}
void Book::Save(){
 
}
void Book::Add(){
   std::cout << "[Меню добавления книги]" << std::endl;
   std::cout << "Введите группу: ";  std::cin >> group;
   std::cout << "Введите год: ";  std::cin >> year;
 
   std::string str;
 
   do {
      vector.push_back();
      vector.Add();
      std::cout
         << "Добавить еще одну вариацию книги? [Да/Нет]"
         << std::endl;  std::cin >> str;
   } while (str == "Да");
}
void Book::Change(){
 
}
void Book::Print(){
 
}
void Book::Delete(){
 
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.04.2018, 22:21
Ответы с готовыми решениями:

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор. Размера .. Нужно его передать в...

Вывести значения std::vector<std::vector<int*> >
Подскажите, как вывести значения? const size_t row = 3; const size_t col = 3; std::vector&lt;std::vector&lt;int*&gt; &gt; imatrix; ...

9
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2018, 22:22
Где аргумент у push_back()?
0
 Аватар для Horia
0 / 0 / 2
Регистрация: 15.01.2015
Сообщений: 66
18.04.2018, 22:26  [ТС]
Подробнее, пожалуйста?
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
18.04.2018, 22:36
Horia, в push_back нужно передавать значение, которое необходимо добавить в конец вектора
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2018, 22:37
Лучший ответ Сообщение было отмечено Horia как решение

Решение

C++
1
2
      vector.push_back(Variant());
      vector.back().Add();
1
 Аватар для Horia
0 / 0 / 2
Регистрация: 15.01.2015
Сообщений: 66
18.04.2018, 22:45  [ТС]
Скажите, почему Variant нужно писать со скобками?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2018, 22:53
Ну это же вызов конструктора.
1
 Аватар для Horia
0 / 0 / 2
Регистрация: 15.01.2015
Сообщений: 66
18.04.2018, 22:53  [ТС]
Оу. Понял. Спасибо.
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,368
18.04.2018, 23:18
Цитата Сообщение от Horia Посмотреть сообщение
Понять не могу, где накосячил.
везде. твой кот... это полный треш, тут даже смеяться не над чем... только плакать. Ты хоть словами опиши объектную модель того , чего ты понаписал... Зачем тебе книги в книге? а куда ты книгу собираешься добавлять, откуда удалять?
зы это не насмешка, я просто пытаюсь понять, как так можно коряво написать. и как это можно сдать =(
0
19.04.2018, 19:58
 Комментарий модератора 
Уважайте правила форума и друг друга, обсуждайте проблемы кода, а не личностные
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.04.2018, 19:58
Помогаю со студенческими работами здесь

Как изменять размер std::vector<std::vector>?
Здравствуйте, как нужно изменять размер std::vector&lt;std::vector&gt; например: std::vector&lt;std::vector&lt;float&gt;&gt; data; ...

Std::vector<std::pair<std::vector<int>::iterator, std::vector<int>::iterator>
Вопрос по вектору. Допустим есть вектор, std::vector&lt;int&gt; vec; на каком - то этапе заполнения я ставлю закладку итератора, ...

Std::vector/QVector в классе или std::vector/QVector классов?
Доброе время суток! Собственно вопрос в самой теме, есть некий класс class WorkJornal { private: string manager; ...

Реализация класса MyString. Стандартная библиотека, std::string, std::vector
как добавить реализацию конкатенации строк через перегрузку оператора &quot;+=&quot; в классе MyString и почему ошибка выдается???#include...

Передача функции указатель на элемент std::vector<std::string>
Доброй ночи тем, кому не спится (или живет в другом часовом поясе:p)! Есть функция, требующая в качестве параметра указатель на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru