Создание двумерного динамического массива в классе 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 ** вам ни к чему...

→ Ссылка