Я создаю своего рода цифровой торговый автомат для школы и столкнулся с проблемой.Я создал структуру Items
для вендинга.Затем я создал структуру с именем Machine
, которая содержит vector<Items>
.Я хотел создать цикл for, который перебирает vector<Item>
и отображает элементы, но я получаю следующую ошибку:
C:\Users\Nate\Desktop>g++ structversion.cpp -o structversion.exe -std=c++11
structversion.cpp: In function 'int test(Machine)':
structversion.cpp:29:20: error: 'begin' was not declared in this scope
for (Item item : machine) {
^
structversion.cpp:29:20: note: suggested alternatives:
In file included from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/string:51:0,
from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/locale_classes.h:40,
from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/ios_base.h:41,
from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ios:42,
from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ostream:38,
from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/iostream:39,
from structversion.cpp:1:
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/range_access.h:87:5: note: 'std::begin'
begin(_Tp (&__arr)[_Nm])
^
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/range_access.h:87:5: note: 'std::begin'
structversion.cpp:29:20: error: 'end' was not declared in this scope
for (Item item : machine) {
^
structversion.cpp:29:20: note: suggested alternatives:
In file included from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/string:51:0,
from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/locale_classes.h:40,
from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/ios_base.h:41,
from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ios:42,
from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ostream:38,
from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/iostream:39,
from structversion.cpp:1:
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/range_access.h:97:5: note: 'std::end'
end(_Tp (&__arr)[_Nm])
^
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/range_access.h:97:5: note: 'std::end'
Я прошу прощения, если это избыточный или тупой вопрос.Также здесь обсуждается код:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct Item
{
string name;
double price;
unsigned int quantity;
unsigned int amountInCart;
bool addedToCart;
};
struct Machine { vector<Item> menu; };
void initItem(Item& i, string name, double price, unsigned int quantity,
unsigned int amountInCart, bool addedToCart)
{
i.name = name;
i.price = price;
i.quantity = quantity;
i.amountInCart = amountInCart;
i.addedToCart = addedToCart;
}
test(Machine machine)
{
for (Item i : machine) {
cout << "item = " << i.name;
}
}
main()
{
Item cake;
Item fruit;
Item chips;
Item soda;
Item juice;
initItem(cake, "Cake", 3.00, 5, 0, false);
initItem(fruit, "Fruit", 4.20, 15, 0, false);
initItem(chips, "Chips", 1.00, 6, 0, false);
initItem(soda, "Soda", 1.50, 7, 0, false);
initItem(juice, "Juice", 1.90, 10, 0, false);
Machine machine;
machine.menu.push_back(cake);
machine.menu.push_back(fruit);
machine.menu.push_back(chips);
machine.menu.push_back(soda);
machine.menu.push_back(juice);
test(machine);
return 0;
}
Функция test
- это место, где я пытаюсь перебрать векторное меню в структуре Machine
.
Я довольно новыйтак что, если у кого-то есть время и может ELI5, что я делаю неправильно, это было бы удивительно.