我在将数据存储到类中的私有(private)数组时遇到问题。
我试过谷歌但没有找到任何解决方案。
这是我的代码:
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。
我尝试通过添加 this solution
class Foo {
// ...
Public:
Foo::Foo(int arr_, double d_) : arr_(new int[10]), d_(d) { };
但是 Visual Studio 2017 说数组没有初始化。
我也试过 this solution ,但是 VS 说不能修改这个范围内的数组。
请帮忙。提前谢谢你。
最佳答案
#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);
}
// ...
};
关于C++ - 在 C++ 类中初始化私有(private)数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53181697/