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

标签 c++ vector

我写了一段代码。

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

在代码的最后两行中,分别将 authors 的 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>> &'

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

但是,我的问题是,我想返回一个由用户添加作者的作者 vector 。这导致了问题,因为在此之前,代码是有效的。

代码如下:

#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; , 使用比 SimpleClass 更具体的名称和 SecondClass并且不要将公共(public)声明与私有(private)声明混合,将其放在一个 block 中。

关于C++ 代码不按预期返回 vector 并在转换时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24510147/

相关文章:

c++ - QML 对象属性从 C++ 更改,但我看不到结果

multithreading - 多核 J -- 并行化

c++ - Eigen 二维叉积

c++ - 在 for 循环中创建和存储数组

c++ - 2 我的 strcmp 函数测试失败

c++ - 函数调用中如何进行模板递归?

c++ - 在 C++ 中对 vector 使用函数

java - 如何检查 java 中 vector 中是否有用户定义的条目?

c++ - 如何将 bool vector memcpy 到 char 数组?

c++ - 如何列出 C++ 数组中所有可能的组合总和?