Создание двумерного динамического массива в классе c++
Сразу скажу, что про создание двумерного динамического массива именно в КЛАССЕ ничего не нашел, извините, если такой вопрос на самом деле есть.
При создании двумерного динамического массива вне класса - все хорошо, все работает.
int main() {
int SIZE = 6;
string **arr = new string*[SIZE];
for (int i = 0; i < SIZE; i++)
{
arr[i] = new string[SIZE];
for (int j = 0; j < SIZE; j++)
{
arr[i][j] = "# ";
}
}
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
std::cout << arr[i][j];
}
std::cout << std::endl;
}
for (int i = 0; i < SIZE; i++)
{
delete [] arr[i];
}
delete [] arr;
return 0;
}
Но при создании такого же массива в классе - ничего не работает:
class Field
{
private:
int SIZE;
public:
string **field = new string*[1];
Field(int size)
{
this->SIZE = size;
string **field = new string*[SIZE];
// Create field with double dynamic array
for (int i = 0; i < SIZE; i++)
{
field[i] = new string[SIZE];
for (int j = 0; j < SIZE; j++)
{
field[i][j] = "# ";
}
}
}
// Destructor - in the end of the programm delete dynamic array from dynamic memory
~Field()
{
for (int i = 0; i < SIZE; i++)
{
delete [] field[i];
}
delete [] field;
}
void out()
{
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
std::cout << field[i][j];
}
std::cout << std::endl;
}
}
};
int main()
{
int size = 5;
Field my_field(5);
my_field.out();
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вы понимаете, что в
Field(int size)
{
this->SIZE = size;
string **field = new string*[SIZE];
field не имеет ничего общего с полем (членом-данными) field? И все, что вы навыделяли, становится при выходе из конструктора просто утечкой памяти?
Подсказка: string ** вам ни к чему...