C ++-在C ++类中初始化私有数组

时间:2018-11-06 23:37:10

标签: c++ arrays

我在将数据存储到类中的私有数组时遇到问题。

我尝试使用Google,但没有找到任何解决方案。

这是我的代码:

Foo.h

class Foo {
private:
    int arr[10];
    double d;
public:
    Foo::Foo(double d) {
        this->d = d;
    }
    // ...
};

Foo.cpp

int main() {
    double d = 123.456;
    int array[10];
    // Getting data from user input by for-loop 10 times.

    Foo f = Foo(d);

这是我的问题-如何将 array 保存到 f 中?

好像使用指针(*f.arr = array;)并不会改变 arr


我尝试通过添加

this solution
class Foo {
// ...
Public:
    Foo::Foo(int arr_, double d_) : arr_(new int[10]), d_(d) { };

但是Visual Studio 2017表示未初始化数组。


我也尝试过this solution,但是VS说无法在此范围内修改数组。

请帮助。预先谢谢你。

1 个答案:

答案 0 :(得分:2)

#include <algorithm>  // std::copy()
#include <iterator>   // std::size()

class Foo {
private:
    int arr[10];
    double d;
public:
    Foo(double d, int *data)
    : d{ d }
    {
        std::copy(data, data + std::size(arr), arr);
    }
    // ...
};