Salve a tutti, avrei un problema con un array di dimensioni scelto dall'utente. Essenzialmente mi restituisce un errore perchè la grandezza della variabile (righe) non è ancora definita. Infatti io la definisco dopo (nel main, chiedendo all'utente).
A quanto ho capito ho bisogno di utilizzare le funzioni new e delete del c++ , ma non saprei bene come muovermi, qualcuno potrebbe darmi una mano? Grazie.
(Ovvio che il programma non è completo, solo che non ho continuato perchè mi restituiva già errore)

codice:
/*Questo programma dovrà far inserire una matrice all'utente
Se la matrice risulta quadrata calcolarne il vettore diagonale
e da questo vettore fare il cout dei numeri positivi.
In caso la matrice non sia quadrata, restituire un  errore.
*/

#include <iostream>
using namespace std;

//Le variabili
int righe ;
int colonne;
bool quadrata = false;
//Le funzioni
bool matriceQuadrata(int a,int b);
void inserisciDati(int matrix[][righe]);

int main()
{
    //Devo prima di tutto creare la matrice con dei parametri inseriti dall'utente.
    cout << "Inserire il numero di righe della matrice" << endl;
    cin >> righe;
    cout << "Inserire il numero di colonne della matrice" << endl;
    cin >> colonne;
    //A questo punto posso creare la matrice.
    int matrix[righe][colonne];
    //Il primo passo è fare un check se la matrice è quadrata o meno, faccio una funzione.
    quadrata = matriceQuadrata(righe,colonne);
    //A questo punto devo restituire un messaggio di errore se la matrice non è quadrata (Lo metterò nell'else)
    //Invece se la matrice è quadrata, devo calcolarne la diagonale.
    if(quadrata)
    {
                //Per la scrittura della matrice
                inserisciDati(matrix[][righe]);
                //Per il calcolo della diagonale

    }
    else cout << "Errore: La matrice non e' quadrata" << endl;
    system("PAUSE");
}

bool matriceQuadrata(int a, int b)
{
     //Faccio un controllo: radice quadrata significa che il numero delle righe deve essere uguale al numero di colonne.
     if(a == b) return true;
     //Se sono diverse ritorno il falso
     else return false;
}

void inserisciDati(int matrix[][righe])
{
     //Devo fare due nested for
     for(int i = 0; i < righe; i++)
     {
             cout << "Inserire i dati della " << i << "riga della matrice" << endl;
             for(int j = 0; j < righe; j++)
             {
                     cin >> matrix[i][j];
             }
     }
     
}