首页 > 解决方案 > C++ - 在 C++ 类中初始化私有数组

问题描述

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

我尝试谷歌并没有找到任何解决方案。

这是我的代码:

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);

这是我的问题——如何将数组保存到f中?

似乎使用指针 ( *f.arr = array;) 实际上并没有改变arr


我通过添加尝试了这个解决方案

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

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


我也试过这个解决方案,但是 VS 说不能修改这个范围内的数组。

请帮忙。先感谢您。

标签: c++arrays

解决方案


#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);
    }
    // ...
};

推荐阅读