我只是C ++的初学者,我试图让一些向量为我的程序工作,因为我试图编写一个允许用户添加/编辑/删除之前的程序来自文件的条目。问题是我不能让我的二传手正确使用矢量。我不确定我到底做错了什么。
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
class DVD
{
public:
//Default constructor
DVD();
//Class members
vector<string> name[5];
vector<string> length[5];
vector<string> actora[5];
vector<string> actorb[5];
vector<string> year[5];
//Function to set and get DVD Name
void setDVDname(vector<string> name)
{
DVDname[5]=name[5];
}
vector<string> getDVDname()
{
return DVDname;
}
//Function to set and get DVD length
void setDVDlength(vector<string> length)
{
DVDlength=length;
}
vector<string> getDVDlength()
{
return DVDlength;
}
//Function to get and get DVD year
void setDVDyear(vector<string> year)
{
DVDyear=year;
}
vector<string> getDVDyear()
{
return DVDyear;
}
//Function to get and set DVD Actor Alpha
void setDVDactorA(vector<string> actora)
{
DVDactorA=actora;
}
vector<string> getDVDactorA()
{
return DVDactorA;
}
//Function to get and set DVD Actor Bravo
void setDVDactorB(vector<string> actorb)
{
DVDactorB=actorb;
}
vector<string> getDVDactorB()
{
return DVDactorB;
}
protected:
private:
//Variables to hold DVD information
vector<string> DVDname[5];
vector<string> DVDlength[5];
vector<string> DVDactorA[5];
vector<string> DVDactorB[5];
vector<string> DVDyear[5];
};
答案 0 :(得分:2)
由于你正在制作DVD库,你可以这样做:
class DVD {
std::string name;
// etc.
};
std::vector<DVD> library;
library
变量将是一个DVD列表,可以容纳与计算机内存可以处理的DVD数量相同的DVD。使用std::vector
的目的是不必担心自己管理内存。您只需使用library.push_back()
添加更多DVD。如果您想查看std::vector
提供的其他方法,请查看cppreference.com。
从逻辑上讲,您希望DVD类仅代表DVD,而不是DVD或DVD列表,因此请尽量将这两个概念分开代码。
答案 1 :(得分:0)
你得到任何编译错误是否符合逻辑?
另外,为什么要使用矢量?由于它是一张DVD而你的矢量对应于信息,只需删除矢量并使它们成为简单的字符串。
答案 2 :(得分:0)
首先删除它,你不使用它,你不需要它。您可以将此实例保留的值设置为私有。同时删除受保护的关键字,现在不保护任何内容。
//Class members
vector<string> name[5];
vector<string> length[5];
vector<string> actora[5];
vector<string> actorb[5];
vector<string> year[5];
第二个在setDVDName()上传递一个向量的副本然后你只分配基本上不存在的最后一个部分,因为你的向量有5个元素,你请求第6个。如果你想要第5个元素,你应该将它改为name [4]。
我认为你需要这样的东西:DVDName = name;
另外,更改向量的声明。
从
//Variables to hold DVD information
vector<string> DVDname[5];
vector<string> DVDlength[5];
vector<string> DVDactorA[5];
vector<string> DVDactorB[5];
vector<string> DVDyear[5];
要:
//Variables to hold DVD information
vector<string> DVDname(5);
vector<string> DVDlength(5);
vector<string> DVDactorA(5);
vector<string> DVDactorB(5);
vector<string> DVDyear(5);