C++ C++;代码未按预期返回向量,并在转换时抛出错误
我已经写了一段代码 它是干什么的?它打印一些东西,然后要求用户插入他最喜欢的作者的名字,然后将插入的作者添加到向量中 在代码的最后两行中,分别将作者的向量指定给向量变量,但在这一行上,它抛出以下代码:C++ C++;代码未按预期返回向量,并在转换时抛出错误,c++,vector,C++,Vector,我已经写了一段代码 它是干什么的?它打印一些东西,然后要求用户插入他最喜欢的作者的名字,然后将插入的作者添加到向量中 在代码的最后两行中,分别将作者的向量指定给向量变量,但在这一行上,它抛出以下代码: error C2664: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(std::initializer_list<_Elem>,
error C2664: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(std::initializer_list<_Elem>,const std::allocator<char> &)' : 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>> &'
错误C2664:'std::basic_string::basic_string(std::initializer_list,const std::allocator&'):无法将参数1从'std::vector'转换为'const std::basic_string&'
因此,它没有到达最后一行
然而,我的问题是,我想返回一个作者向量,用户向其中添加了一个作者。这导致了问题,因为在此之前,代码是有效的
代码如下:
#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;
}
#包括“stdafx.h”
#包括
#包括
#包括
#包括
使用名称空间std;
类SimpleClass
{
public:字符串AuthorName;
public:字符串AuthorLastWork;
矢量作者姓名;
公共:int AuthorBirthYear;
私有:字符串AuthorBestSelling;
私人:int AuthorNumOfSoldWorks;
公众:
void SetAuthorName(字符串名称)
{
此->AuthorName=Name;
作者的字符串名称[2]{“杰克·伦敦”、“福楼拜”};
if(Name==namesOfAuthors[0])
{
本->setAuthorSoldWorks(2000000);
}
else if(Name==nameofauthors[1])
{
本->setAuthorSoldWorks(5000);
}
}
int GetAuthorNumOfSoldWorks()
{
返回此->AuthorNumOfSoldWorks;
}
私人:
void setAuthorSoldWorks(整数)
{
此->AuthorNumOfSoldWorks=编号;
}
}; // 下课
类第二类:公共SimpleClass
{
公众:
void AddAuthor(字符串名称)
{
此->AuthorNames.push_back(名称);
}
GetAuthors(字符串名称)
{
返回此->AuthorNames;
}
};
int main()
{
字符串AuthorNameByUser;
简单类SC;
二等二等;
SC.SetAuthorName(“杰克伦敦”);
cout您的GetAuthors()
函数没有返回类型
您应该添加std::vector GetAuthors(){…}
除此之外,您不应该使用using namespace std;
,使用比SimpleClass
和SecondClass
更具体的名称,并且不要将公共声明与私有声明混合在一起,将其保存在一个块中。您缺少GetAuthors
成员函数的返回值。