Как ниже, указатель строки инициализации с использованием синтаксиса Line(string arg): foo{new string(arg)} {}
, но не для динамического массива, он failes использовать Line(int* arg): p_matrix{new int[3](arg)} {}
(давайте временно забыть правило пяти)Есть ли простой способ инициализировать элемент данных, который является динамическим массивом в C++?
Как инициализировать динамический массив, который сам по себе является член данных класса
#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;
}
Вы можете написать 'new int [3] {arg [0], arg [1], arg [2]}'. Если вы не хотите этого делать, вам нужно написать цикл в конструкторе. Чтобы избежать такого рода проблем, используйте меньше массивов и указателей на raw и больше используйте классы, такие как 'string' и' array'. –
@ M.M Sad знать это – Nicholas