2015-07-18 2 views
-6
 // pointer to functions 
#include <iostream> 
#include <vector> 
using namespace std; 

struct boo{ 
    string u; 
    int p; 
}; 

vector <boo> om(boo &bo){ 
    cin >> bo.u; 
    cout << bo.u; 
} 

int main(){ 
    string q; 
    vector <boo> b; 
    om(b); 
} 

Хорошо, мне нужно, чтобы понять, как я буду иметь возможность написать vector<boo> om(boo &bo) в мою main(). Я всегда получаю с собой некоторую ошибку, и мне нужна помощь. Я никогда не могу назвать функцию главной, потому что просто просто не знаю, как назвать ее основной. Ну, я знаю, как позвонить om([I just need help with this part]) Я понятия не имею, что заполнить это.Как я могу назвать эту функцию в главном

P.S Извините, что это на дне Im noob with stackoverflow.

+3

b должно быть типа boo, а не вектором Creris

+2

http: // stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – juanchopanza

+1

изучите основы, вы вводите в заблуждение множество базовых понятий –

ответ

3

Выстрел в темноте здесь, потому что это, по-видимому, является наиболее вероятным намерением. Если я ошибаюсь, мы надеемся, что это все еще учебное.

#include <iostream> 
#include <vector> 

Я удалил использование пространства имен std, которое было здесь, потому что это опасно. Не верьте мне? Сделайте быстрый поиск. StackOverflow усеян "WTF продолжается?" вопросы, которые разрешают «что-то в пространстве имен std, имеют то же имя, что и ваша переменная».

struct boo 
{ 
    std::string u; 
    int p;   
}; 

Я оставил Бу только для того, чтобы сохранить его узнаваемым для ОП. Однако описательные имена действительно помогают вашему коду объяснить себя. Никто здесь, за исключением OP, не знает, что представляет собой буй и как его следует использовать или что представляют его члены, и как они должны использоваться. Это ограничивает нашу способность помогать OP с поддержкой отладки и советами.

О функции om. Опять же, ужасное имя. Имя функции должно содержать некоторые подсказки относительно того, что делает функция.

Предположения:

Ом предназначен для

  1. читать на входе, чтобы получить данные, необходимые для заполнения СВЭ структурировать
  2. место, BOO структуру в основной-х вектора Ь

С учетом этого,

  1. Не нужно ничего возвращать, кроме, возможно, кода ошибки, если пользователь не может ввести правильный ввод.
  2. Единственное, что стоит передать, это ссылка на вектор. Ссылка позволяет изменять вектор, предоставленный вызывающим абонентом.

Если бы мы знали, что такое бу, кто-то может предложить лучшие способы сделать это и подтвердить ввод пользователя.

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; 
    } 
} 
+0

Спасибо, что bro freaking awesome – Justin

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