如何在创建类时定义数组的大小?

时间:2015-08-22 13:04:18

标签: c++ arrays constructor

我想创建一个包含在类中的数组。数组具有固定大小,但在类的构造函数之前我不知道固定大小。

假设用户创建了类似:Fibanocci f(value1, value2, size)的内容。然后,size参数将用于确定包含数组中元素的数量,这些元素将在Fibanocci实例的整个整个生命周期内得到修复。

如何解决此问题?

4 个答案:

答案 0 :(得分:1)

改为使用std::vector<type> vector,您可以执行int size = vector.size()。您可以在构造函数中初始化向量的大小。例如,

// MyClass.hpp
class MyClass
{
public:
    MyClass();

    // Say I know this vector is going to have 5 elements
    std::vector<double> myVector; 
}

// MyClass.cpp
MyClass::MyClass() : myVector(5)
{
    int vectorSize = myVector.size(); //vectorSize = 5
}

答案 1 :(得分:0)

这是不可能的,因为C / C ++要求所有类都具有常量sizeof。唯一的方法是使用堆分配(newstd::vector作为@jlack建议或其他任何方式)

答案 2 :(得分:-1)

数组大小必须在编译时知道!!不要以为你会因使用vector而失去性能,它是数组的包装器。如果您非常严格并且拥有C ++ 11,则可以使用标准库中的数组。

我是否使用调整大小或保留?

预留将分配内存但不插入任何内容。除非指定参数,否则Resize将插入默认构造对象的副本。

答案 3 :(得分:-3)

Java使数组动态化,它将在运行时分配大小。 将形成其对象为此数组的代理类。

int a[]=new int[10];