c++代码不按预期返回vector,并在转换时抛出错误

C++ Code do not return vector as expected and throws errors on conversion

本文关键字:转换 错误 出错 vector 代码 返回 c++      更新时间:2023-10-16

我写了一段代码。

它做什么?它打印一些东西,然后要求用户插入他最喜欢的作者的名字,然后将插入的作者添加到一个向量中。

在代码的最后两行中,分别将作者的vector赋值给vector变量,但在这一行,抛出了以下代码:

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>> &'

因此,它没有到达最后一行。

然而,我的问题是,我想返回一个作者向量,其中一个作者是由用户添加的。这就导致了问题,因为在此之前,代码是正常工作的。

代码如下:

#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;
}

您的GetAuthors()函数没有返回类型。

你应该加上std::vector<string> GetAuthors(){ ... }

除此之外,您不应该使用using namespace std;,使用比SimpleClassSecondClass更具体的名称,不要将公共声明与私有声明混合,将其保存在一个块中。