Выстрел в темноте здесь, потому что это, по-видимому, является наиболее вероятным намерением. Если я ошибаюсь, мы надеемся, что это все еще учебное.
#include <iostream>
#include <vector>
Я удалил использование пространства имен std, которое было здесь, потому что это опасно. Не верьте мне? Сделайте быстрый поиск. StackOverflow усеян "WTF продолжается?" вопросы, которые разрешают «что-то в пространстве имен std, имеют то же имя, что и ваша переменная».
struct boo
{
std::string u;
int p;
};
Я оставил Бу только для того, чтобы сохранить его узнаваемым для ОП. Однако описательные имена действительно помогают вашему коду объяснить себя. Никто здесь, за исключением OP, не знает, что представляет собой буй и как его следует использовать или что представляют его члены, и как они должны использоваться. Это ограничивает нашу способность помогать OP с поддержкой отладки и советами.
О функции om. Опять же, ужасное имя. Имя функции должно содержать некоторые подсказки относительно того, что делает функция.
Предположения:
Ом предназначен для
- читать на входе, чтобы получить данные, необходимые для заполнения СВЭ структурировать
- место, BOO структуру в основной-х вектора Ь
С учетом этого,
- Не нужно ничего возвращать, кроме, возможно, кода ошибки, если пользователь не может ввести правильный ввод.
- Единственное, что стоит передать, это ссылка на вектор. Ссылка позволяет изменять вектор, предоставленный вызывающим абонентом.
Если бы мы знали, что такое бу, кто-то может предложить лучшие способы сделать это и подтвердить ввод пользователя.
void om(std::vector<boo> &bo)
{
boo temp; //start by making a temporary boo
std::cin >> temp.u; // read user input into the temporary boo
// removed the print out here
bo.push_back(temp); // copy the temporary boo into the vector
}
основной изменен, чтобы удалить неиспользуемую строку д и вывести содержимое вектора Ь
int main()
{
std::vector<boo> b; // usual nagging about non-descriptive name
om(b);
for (boo testboo: b)
{ // print all boos in b
std::cout << testboo.u << std::endl;
}
}
И как один срез-н-паста-умелым блок для пытается его и играть вокруг:
#include <iostream>
#include <vector>
struct boo
{
std::string u;
int p;
};
void om(std::vector<boo> &bo)
{
boo temp; //start by making a temporary boo
std::cin >> temp.u; // read user input into the temporary boo
// removed the print out here
bo.push_back(temp); // copy the temporary boo into the vector
}
int main()
{
std::vector<boo> b; // usual nagging about non-descriptive name
om(b);
for (boo testboo: b)
{ // print all boos in b
std::cout << testboo.u << std::endl;
}
}
b должно быть типа boo, а не вектором –
Creris
http: // stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – juanchopanza
изучите основы, вы вводите в заблуждение множество базовых понятий –