2014-09-09 2 views
0

Я пытаюсь создать программу на C++, которая использует текстовый файл в качестве базы данных. Для этого он хранит строки в текстовом файле (представляющие песни) как «Revolution Diplo Revolution 320 12» Когда это предложение разбивается (вся другая дилемма), значения данных - это имя, исполнитель, альбом, килобайт/секунду , и размер в мегабайтах, соответственно.Ошибка C++, создающая вектор с использованием структур

Я получаю следующие ошибки:

  1. 'главный() :: песня' использует локальный тип 'Main() :: песню',

  2. Попытка создать экземпляр «шаблонный класс станд :: распределитель»,

  3. Шаблон аргумент 2 является недействительным, и

  4. функция разрешения не допускается здесь до„{“ токен

И я не могу понять, как это работает вообще.

struct song{ 
    string name; 
    string artist; 
    string album; 
    string kbs; 
    string size; 
}; 

//Declare our function that will search 
vector<song> loadStructsInData(){ //THIS LINE IS WHERE THE ERROR ARISES 
    /* this part just reads a file and interprets each line as structs, like a database */ 

    return songs; 
    cout<<"All done!"<<endl<<endl; 
} 

И все это в функции main().

+3

'main() :: song' - похоже, что вы объявляете все в' main() '. Не делай этого. –

ответ

0

Вы должны объявить свою структуру в глобальной (или классе, но не в функции) области, чтобы использовать ее в контейнере STL.

+0

Итак, я бы просто объявил это за пределами основного? (Я действительно начинаю с C++, спасибо!) – Gabriel

+1

@Gabriel. Да, объявляйте свою структуру за пределами своей основной функции. Кроме того, вы возвращаетесь до 'cout', поэтому вы никогда не достигнете своего заявления' cout'. – MARS

+0

Спасибо. Еще один вопрос: можно ли создать структуру, не привязывая ее к имени переменной? Могу ли я создать вектор «песенных» структур, у которых нет имени переменной? – Gabriel

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