为什么在向量初始化时出现此错误?

时间:2020-01-27 18:03:59

标签: c++ vector constructor

我在向量声明和初始化中遇到问题 类的构造函数。我有一个类的Station.hStation.cpp文件,我在main中回想了它:

Station.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的构造函数中初始化向量:

Station.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中调用它:

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;
}

我在哪里弄错了?

2 个答案:

答案 0 :(得分:2)

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)
{
}

答案 1 :(得分:1)

if( !await CheckForStoragePermissions() ) { DialogService.Alert("Invalid Permission", "User declined permission for this action"); return; } private async Task<bool> CheckForStoragePermissions() { PermissionStatus storagePermissionStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage); if (storagePermissionStatus != PermissionStatus.Granted) { Dictionary<Permission, PermissionStatus> storagePermissionResult = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Storage); if (storagePermissionResult.ContainsKey(Permission.Storage)) { storagePermissionStatus = storagePermissionResult[Permission.Storage]; } } return storagePermissionStatus == PermissionStatus.Granted; } 这是行不通的,因为它不是初始化原因,所以它不起作用。

要使其在this->binari(num_bin);中使用它,请执行以下操作:

in-class initialization list