使用向量和类

Posted

技术标签:

【中文标题】使用向量和类【英文标题】:Using a vector and classes 【发布时间】:2020-05-08 00:32:27 【问题描述】:

我有一个问题,对你来说可能看起来很简单,但即使我真的尝试过,我也无法弄清楚。

#include <iostream>
#include <string>
#include <vector>

//Functions Prototypes ---
void create_object(std::vector <Movie> &);
std::string set_name();
int set_ryear();
double set_rating();

//Classes ---
class Movie 
public:
    std::string name;
    int release_year;
    double rating;
public:
    //Constructors
    Movie(std::string u_name, int u_release_year, double u_rating);
    ~Movie() ;
    Movie(const Movie &);
;


//MAIN ---
int main() 
    std::vector <Movie> Collection;
    create_object(Collection);

    return 0;


//Constructors ---
Movie::Movie(std::string u_name, int u_release_year, double u_rating)
    :name u_name , release_year u_release_year , rating u_rating 



//Stand-Alone Functions ---
char get_selection() 
    char x;
    std::cin >> x;
    return x;


void create_object(std::vector <Movie> &x) 
    std::string u_name = set_name();
    int u_ryear = set_ryear();
    double u_rating = set_rating();

    Movie User_Movie u_name,u_ryear,u_rating ;


std::string set_name() 
    std::string x;

    std::cout << "Name: ";
    std::cin >> x;

    return x;


int set_ryear() 
    int x;

    std::cout << "Release year: ";
    std::cin >> x;

    return x;


double set_rating() 
    double x;
    std::cout << "Rating: ";
    std::cin >> x;

    return x;

我只是一个初学者,所以我知道的不多,但据我所知,即使它们是用户定义的类型,类也应该是类型,并且它们应该提供被操作为的可能性原始类型。

那么,当我尝试创建一个需要一堆 Movie 类型的向量时,或者当我通过引用传递它时,为什么会收到错误消息?

错误 C2664 'void create_object(std::vector &)':无法将参数 1 从 'std::vector>' 转换为 'std::vector &' 错误 C2923“std::vector”:“电影”不是参数“_Ty”的有效模板类型参数 错误 C2065“电影”:未声明的标识符

它的主要用途应该是对所有函数可见,以便我可以根据需要将其传递给它们,并对它的对象进行操作(比如在创建一个新对象之后,我希望能够添加在我使用switch 创建菜单系统后,使用push_back() 和所有这些东西将其放入集合中。

【问题讨论】:

【参考方案1】:

当您到达此语句时,您尚未声明 Movie 类:

void create_object(std::vector <Movie> &);

创建 C++ 类的正确方法是将基本声明放在一个单独的文件中 movie.h,然后在您的代码中开始 #include

如果您不能这样做(尽管您确实应该这样做),请将类声明移到文件的开头。

【讨论】:

哇...我想简单的事情往往是最成问题的。感谢您的帮助和时间!

以上是关于使用向量和类的主要内容,如果未能解决你的问题,请参考以下文章

nine 集合

C++学习笔记:高级编程:模板,预处理器,信号处理,多线程,Web编程

如何使用命名空间和类?

接口和类的使用案例

在 C++ 中使用 stl 列表和类

在 sklearn 中使用样本和类权重