c++ - 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 说不能修改这个范围内的数组。
请帮忙。先感谢您。
解决方案
#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);
}
// ...
};
推荐阅读
- r - ggplot2:有条件地改变线型和颜色
- flutter - 如何通过 onTap() 从 ListView.Builder 中删除项目{}
- java - HttpSession setMaxInactiveInterval 不完全工作时间已设置
- django - 我的 Django 应用程序中的相关名称问题
- android - Android Firebase 从多个节点检索数据作为列表
- python - 无法使用 python 连接器将数据插入 maria db
- r - sparklyr 使用 stringr 改变行为
- java - 如何在 spigot 1.16.4 中获取玩家的 ping
- javascript - 如何在 React 中使用来自您的 passportjs 策略的访问消息
- r - 在 R 中查找最大值