我想创建一个数组,其中每个元素都可以从intfloat设置(这些特定类型仅是示例)。

因此,我继续使用两个构造函数制作了一个类:

class ScaledNumber {
  private:
    int scaled_number;

  public:
    ScaledNumber(int number);
    ScaledNumber(float number);
};

ScaledNumber::ScaledNumber(int number) {
  scaled_number = number * 1000;
}

ScaledNumber::ScaledNumber(float number) {
  scaled_number = (int)(number * 1000);
}


当我使用此类的单个变量时,此方法工作正常。但是现在我想创建一个此类对象的数组。我必须添加第三个构造函数才能使声明正常工作:

ScaledNumber::ScaledNumber() {}

ScaledNumber numbers[5];


现在,如果要重新分配例如numbers[3],是否可以以某种方式使用构造函数,还是必须添加set()方法或类似方法?

最佳答案

我可以以某种方式利用构造函数


您可以简单地使用:

ScaledNumber numbers[5];
numbers[0] = 20;
numbers[1] = 30.2f;


进行分配之前,编译器将使用适当的构造函数。最后两行由编译器翻译为:

numbers[0] = ScaledNumber(20);
numbers[1] = ScaledNumber(30.2f);

07-28 04:45