Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;代码未按预期返回向量,并在转换时抛出错误_C++_Vector - Fatal编程技术网

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
成员函数的返回值。