我有一个类,它有一个字符串 vector 作为变量,还有一个构造函数,它接受输入来设置这个 vector 的大小。唯一的问题是 vector 中的元素根本没有设置默认值。这里出了什么问题?尝试了调整大小和分配,但每次都以空白结束。
类:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Lab
{
private:
vector<string> station;
int id;
public:
Lab()
{
station[0] = "Empty";
id = 0;
};
Lab(int ID, int size)
{
station.assign(size, "Empty");
id = ID;
};
Lab(const Lab& labcpy)
{
station.resize(labcpy.station.size());
id = labcpy.id;
};
主要设置 vector 大小的地方:
#include <fstream>
#include "lab.h"
using namespace std;
int main(int argc, char* argv[])
{
ifstream labnumber_file(argv[1]);
vector<Lab> lab_v;
int labnum;
int usernum;
while(!labnumber_file.eof())
{
labnumber_file >> labnum;
labnumber_file >> usernum;
lab_v.push_back(Lab(labnum, usernum));
}
最佳答案
问题是 push_back
使用了你的复制构造函数,但你的复制构造函数没有将任何东西复制到 station
中。
由于您的数据成员可以安全地复制,只需使用默认的复制构造函数即可。删除您定义的复制构造函数。
规则三是,如果需要定义析构函数,还需要定义拷贝构造函数和赋值运算符。但是,由于您不需要定义析构函数,因此该规则不适用于 Lab
类。
关于c++ - vector 调整大小/分配不添加默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11324001/