尝试为视频对象创建链接列表以插入,删除,查找,打印。插入函数出错
main.cpp:50:25:错误:在'*'标记之前预期的primary-expression list.insert(视频*视频); ^
的main.cpp
int main (){
23 int counter = 0;
24 string command;
25 Vlist list;
26 Video *video;
29 while (getline(cin, command))
30 {
31 if(command=="insert")
32 {
33 getline(cin, title);
34 getline(cin, url);
35 getline(cin, comment);
36 cin >> length;
37 cin >> rating;
38 cin.ignore();
39
46 list.insert(Video *video);
47 counter++;
48 }
49 else if(command=="remove")
50 {
51 getline(cin, url);
52 getline(cin, comment);
53 cin >> length;
54 cin >> rating;
55 cin.ignore();
56 }
创建了带有在参数
中传递的视频对象的节点构造函数videolist.h
5 #include <iostream>
6 #ifndef VLIST_H
7 #define VLIST_H
8 #include <string>
9 #include "video.h"
10
11 using namespace std;
12
13 class Vlist
14 {
15 public:
16 Vlist();
17 void insert(Video *video);
18 void insert_end();
19 void print();
20
21 private:
22 class Node
23 {
24 public:
25 Node(Video *video, Node *next)
26 {
27 m_video=video; m_next=next;}
28 Video* m_video;
29 Node *m_next;
30 };
31
32 Node *m_head;
33
34 };
35 #endif
videolist.cpp
28 void Vlist::insert(Video *video)
29 {
30
31 if(m_head==NULL)
32 {
33 m_head=new Node(video, NULL);
34 }
35 else
36 {
37 Node *ptr=m_head;
38 while(video->get_title()>ptr->m_next -> m_video-> get_title())
39 {
40 ptr=ptr->m_next;
41 }
42 ptr->m_next=new Node(video*, ptr->m_next);
43 }
44
45
46 }
video.h
5 #ifndef VIDEO_H //if not define
6 #define VIDEO_H
7
8 #include<iostream>
9 #include<string>
10
11 using namespace std;
12
13 class Video
14 {
15 public:
16 Video(string title , string url, string comment, double length, int rating);
17 ~Video();
18 void print();
19 bool longest_length(Video *smallest);
20 bool largest_rating(Video *smallest);
21 bool title_order(Video *smallest);
22 string get_title();
23
24
25 private:
26
27 double m_length;
28 int m_rating;
29 string m_title;
30 string m_comment;
31 string m_url;
32
33 };
34 #endif
35
video.cpp
64 string Video::get_title()
65 {
66 return m_title;
67 }
答案 0 :(得分:1)
list.insert(Video *video);
错了,应该是
list.insert(*video);
拥有正确的语法。但是看看你的VList实现,你正在指向一个视频,所以
list.insert(video);
可能就是你要找的东西。
您的编译器错误很好地解释了这一点,您应该习惯于密切关注此类消息。
我认为你发布的代码中的行号有点不对。