Не указывайте ответ, содержащий вектор!указатели на объекты, созданные
У меня очень плохое понимание указателей, и каждый учебник, который я исследую, только смущает меня больше.
В настоящее время моя программа может принимать команду, которая является «вставить». Затем он будет читать строки для имени, url и comment, double для длины и int для рейтинга. Затем он будет создавать объект.
Что мне нужно сделать, это создать указатель и передать его в качестве аргумента для создания списка указателей на объект при использовании функций из другого класса.
Как я:
создать указатель на объект, который создается в основной?
передать указатель на объект, созданный в качестве аргумента, в функции, созданные и определенные в классе vlist?
Вот мой код
main.cpp
#include <iostream>
#include <string>
#include "vlist.h"
using namespace std;
#include "video.h"
int main(){
string command;
string comment, url, name; // first three getlines
double length; // The length for the movie
int rating;
while (getline(cin,command)){
if (command == "insert"){
getline(cin, name);
getline(cin, url);
getline(cin, comment);
cin >> length;
cin >> rating;
cin.ignore();
//Video *vid
Video = new Video(name, url, comment, length, rating);
List list;
list.insert();
}}
return 0;
}
video.h
#ifndef VIDEO_H
#define VIDEO_H
#include<iostream>
#include<string>
using namespace std;
class Video{
public:
Video(string name, string url, string comment,
double length, int rating);
void print();
private:
string m_comment;
string m_url;
string m_name;
double m_length;
int m_rating;
};
void list_length(Video *video[], int num_vids);
#endif
video.cpp
#include<iostream>
#include "video.h"
using namespace std;
Video :: Video (string name, string url, string comment,
double length, int rating){
m_comment = comment;
m_url = url;
m_name = name;
m_length = length;
m_rating = rating;
}
void Video :: print(){
cout << m_name << ", " << m_url << ", " << m_comment << ", "
<< m_length << ", ";
for(int count = 0; count < m_rating; ++count){
cout << "*";
}
cout << endl;
}
vlist.h
#ifndef VLIST_H
#define VLIST_H
#include<iostream>
#include<string>
using namespace std;
class List{
public:
List();
void insert (Video *video);
private:
class Node{
public:
Node(string name, string url, string comment,
double length, int rating, Node *next){
m_name = name;
m_url = url;
m_comment = comment;
m_length = length;
m_rating = rating;
m_next = next;
}
string m_name, m_url, m_comment;
double m_length;
int m_rating;
Node *m_next;
};
Node *m_head;
};
#endif
vlist.cpp
#include<iostream>
#include<string>
#include "vlist.h"
using namespace std;
List :: List(){
m_head = NULL;
}
void List :: insert(Video *video){
m_head = new Node (name, url, comment, length, rating, m_head);
}
Я не уверен, что вы имеете в виду, что я попробовал, и я мог бы иметь неправильное представление о том, что вы говорите. – Badlittlepiggy
Какую часть вы не понимаете? Какую часть вы попробовали? – paddy