#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
, и не смешивать публичные объявления с частными, храните их в одном блоке.