c++ - 有没有一种简单的方法来初始化 C++ 中的动态数组数据成员?

标签 c++ arrays class dynamic-arrays

如下所示,使用语法 Line(string arg): foo{new string(arg)} {} 初始化字符串指针,但不适用于动态数组,它无法使用 Line(int* arg): p_matrix{new int[3](arg)} {}(让我们暂时忘记五的规则)

如何初始化一个本身是类的数据成员的动态数组

#include <iostream>
#include <string>

using namespace std;

class Line
{
    public:

        string* foo;
        Line(string arg): foo{new string(arg)} {}

        int* p_matrix;
        Line(int* arg): p_matrix{new int[3](arg)} {}
};

int main( )
{
    Line line {"bar"};
    cout << *(line.foo);

    int matrix[3] = {1,2,3};
    Line line2 {matrix};
    cout << line2.p_matrix[0];
    return 0;
}

最佳答案

问题是这一行:

Line(int* arg): p_matrix{new int[3](arg)} {}

正在尝试将 int* 分配给 int

您可以按如下方式初始化数组:

Line(int* arg)
: p_matrix{new int[3]()} 
{
   for(int i = 0; i < 3; ++i)
   {
      p_matrix[i] = arg[i];
   }
}

这不是很安全。

如果你想在初始化列表中初始化它,我怀疑你可以使用 lambas。不过我对此不太熟悉,所以也许其他人可以解释一下。

关于c++ - 有没有一种简单的方法来初始化 C++ 中的动态数组数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40097402/

相关文章:

python - 'self' 关键字在类方法中是强制性的吗?

C++ 矩形到矩形的碰撞

c++ - 构建 Qt 应用程序 Linux

c++ - 从源代码 : links to shared libraries failed 构建 R

arrays - 如何在 Ruby 中迭代哈希数组并返回字符串中特定键的所有值

c - c 中具有常量参数的结构体数组

c++ - 在 C++03 中模拟显式转换

ruby - 比较数组是否匹配字符串

C++模板化接口(interface)

使用 Fluent NHibernate 设置类映射