作为类成员与方法中的不同向量启动背后的原因是什么?

时间:2017-05-01 18:59:36

标签: c++

我试图遵循C ++设计背后的逻辑。这是我的问题。 在以下代码中,为什么我不能将其作为类成员身份启动,

  

vector fhd(10);

但我可以用方法

启动它
  

vector abc(10);

第一种方式会不会引起编译器的混乱?

这是完整的代码

#include <iostream>
#include <vector>

using namespace std;

class testVector{

private:
    int vl;
 //error reported below
    vector<int> fhd(10);
public:
    testVector(int vl){
        this->vl=vl;
    }

    vector<int> assVal(){
        //OK below
        vector<int> abc(10);

        cout << "haha" << endl;
        for(int iter=0; iter < vl; iter++){
            fhd.push_back(iter);
        }
        return fhd;
    }

    void showVec(){
        for(int iter=0; iter < fhd.size(); iter++){
            cout<< fhd[iter] << endl;
        }
    }


};

int main() {


    std::cout << "Hello, World!" << std::endl;

    testVector cj(5);

    cj.assVal();
    cj.showVec();
    return 0;
}

我们不能做到这一点背后的逻辑是什么?我知道有一些替代方法可以作为类成员,例如

vector<int> fhd = vector<int>(10);

1 个答案:

答案 0 :(得分:0)

您希望矢量的固定大小为10吗?如果是这样,那么您可能更喜欢

std::array<int, 10> fhd;

如果您希望它是矢量,那么您可以使用

等语法为其指定默认值
vector<int> fhd = std::vector<int>(10);