У меня проблема, которая может показаться вам простой, но я не могу ее понять, хотя я очень старался.
#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
, или когда я передаю его по ссылке, я получаю ошибки? передать его им, как я хочу, и выполнять операции с его объектами (например, после создания нового объекта я хочу иметь возможность добавить его в коллекцию, используя push_back()
и все такое) после создания системы меню, используя switch
.