Код C не возвращает вектор, как ожидалось, и выдает ошибки при преобразовании

#c #vector

#c #вектор

Вопрос:

Я написал блок кода.

Что это делает? Он что-то печатает, затем просит пользователя вставить имя его любимого автора, а затем добавить вставленного автора в вектор.

В двух последних строках кода, соответственно, вектор авторов присваивается векторной переменной, но в этой строке он выдает следующий код:

 error C2664: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(std::initializer_list<_Elem>,const std::allocator<char> amp;)' : cannot convert argument 1 from 'std::vector<std::string,std::allocator<_Ty>>' to 'const std::basic_string<char,std::char_traits<char>,std::allocator<char>> amp;'
  

Таким образом, он не доходит до последней строки.

Однако моя проблема в том, что я хочу вернуть вектор авторов, к которому пользователь добавляет автора. И это вызывает проблему, поскольку до этого код работал.

Вот код:

 #include "stdafx.h"

#include <iostream>
#include <string>
#include <ctime>
#include <vector>

using namespace std;

class SimpleClass
{
public: string AuthorName;
public: string AuthorLastWork;
        vector<string> AuthorNames;
public: int AuthorBirthYear;

private: string AuthorBestSelling;
private: int AuthorNumOfSoldWorks;

public:
    void SetAuthorName(string Name)
    {
        this->AuthorName = Name;
        string namesOfAuthors[2] {"Jack London", "Flaubert"};
        if (Name == namesOfAuthors[0])
        {
            this->setAuthorSoldWorks(2000000);
        }
        else if (Name == namesOfAuthors[1])
        {
            this->setAuthorSoldWorks(5000);
        }
    }

    int GetAuthorNumOfSoldWorks()
    {
        return this->AuthorNumOfSoldWorks;
    }


private :
    void setAuthorSoldWorks(int number)
    {
        this->AuthorNumOfSoldWorks = number;
    }
}; // END OF CLASS

class SecondClass : public SimpleClass
{
public:
    void AddAuthor(string name)
    {
        this->AuthorNames.push_back(name);
    }
     GetAuthors(string name)
    {
         return this->AuthorNames;
    }
};

int main()
{
    string AuthorNameByUser;

    SimpleClass SC;
    SecondClass SecondClass;
    SC.SetAuthorName("Jack London");

    cout << "This is our selected Author: " << SC.AuthorName << endl;

    cout << "Number of sold works: " << SC.GetAuthorNumOfSoldWorks() << " works." << endl;

    cout << endl;

    cout << "Please type the name of your favorite author: ";

    getline(cin, AuthorNameByUser);

    SecondClass.AddAuthor(AuthorNameByUser);

    vector<string> AuthorsCollection = SecondClass.GetAuthors();

    cout << "Thank for your particpiation. You have entered "" << AuthorsCollection[0] << """ << endl;

}
  

Комментарии:

1. Вам не хватает возвращаемого значения из вашей GetAuthors функции-члена.

Ответ №1:

Ваша GetAuthors() функция не имеет возвращаемого типа.

Вы должны добавить std::vector<string> GetAuthors(){ ... } .

Кроме того, вы не должны использовать using namespace std; , использовать более конкретные имена, чем SimpleClass и SecondClass , и не смешивать публичные объявления с частными, храните их в одном блоке.