为什么我在向量初始化时收到此错误?

Why Do I get this error on vector initialisation?

本文关键字:错误 向量 初始化 为什么      更新时间:2023-10-16

我在 类构造函数。我有一个类的Station.hStation.cpp文件,我主要记得它:

车站.h

#ifndef STATION_H
#define STATION_H
#include <vector>
class Station
{
public:
int num_bin;
int num_staz;
vector<int> binari;   //here already gives me error! Vector does not name a type
Station(int num_staz, int num_bin);
virtual ~Station();
Station(const Station& other);
protected:
private:
};

然后我想像这样初始化.cpp构造函数中的向量:

车站.cpp

#include "Station.h"
using namespace std;
Station::Station(int num_staz, int num_bin)
{
this->num_bin = num_bin;
this->num_staz = num_staz;
this->binari(num_bin);      //here I want to create a vector of num_bin size
}

然后像这样在 main 中调用它:

主.cpp

#include <iostream>
#include "Station.h"
using namespace std;
int main()
{
Station staz1(2,3);
staz1.binari.push_back(300);   // error! class Station has no member binari
staz1.binari.push_back(250);
staz1.binari.push_back(150);
return 0;
}

我哪里犯了错误?

this->binari(num_bin);      //here I want to create a vector of num_bin size

您需要使用的功能是std::vector::resize()

this->binari.resize(num_bin);

最好将对象初始化为适当的大小:

Station::Station(int num_staz, int num_bin) : num_bin(num_bin),
num_staz(num_staz),
binari(num_bin)
{
}

this->binari(num_bin);这不起作用,因为它不是初始化,这就是它不起作用的原因。

要使这项工作在in-class initialization list中使用它:

Station::Station(int num_staz, int num_bin) : 
num_bin(num_bin),
num_staz(num_staz),
binari(num_bin)
{
}