本文介绍了初始化数组的std ::的大小在使用它的类的构造函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以使用的std ::阵列< T类,的std ::为size_t N'GT; 作为类的私有属性,但是初始化它的大小在类的构造函数

Is it possible to use the std::array<class T, std::size_t N> as a private attribute of a class but initialize its size in the constructor of the class?

class Router{
    std::array<Port,???> ports; //I dont know how much ports do will this have
public:
    Switch(int numberOfPortsOnRouter){
        ports=std::array<Port,numberOfPortsOnRouter> ports; //now I know it has "numberOfPortsOnRouter" ports, but howto tell the "ports" variable?
    }
}

我可能会使用一个指针,但会这样没有它怎么办?

I might use a pointer, but could this be done without it?

推荐答案

没有,尺寸必须在编译时是已知的。使用的std ::矢量代替。

No, the size must be known at compile time. Use std::vector instead.

class Router{
    std::vector<Port> ports;
public:
    Switch(int numberOfPortsOnRouter) : ports(numberOfPortsOnRouter) {
    }
};

这篇关于初始化数组的std ::的大小在使用它的类的构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-15 05:42