Je ne sais pas si ce travail, parce que votre question et le code ne sont pas les mêmes, en fonction de votre code, la fonction peut avoir 3 paramètres, donc cela pourrait fonctionner:
int function(int a, int b, int** &array)
{
array = new int*[a];
for (int i =0;i<a;i++)
array[i] = new int[b];
// I don't know why you are returning int, probably doing something here....
}
Toutefois, votre question dit que votre fonction peut prendre un seul paramètre, donc:
- si les dimensions sont connues au moment de la compilation, puis Fred's Answer est le meilleur (il me charmait en fait :)!).
- sinon, je ne vois aucune solution possible qui permette de passer plus d'une valeur spécifiée par l'utilisateur autre que d'encapsuler toutes ces valeurs dans un objet.
Comme ceci:
class Foo {
public:
Foo(int d1, int d2)
{ a = d1; b = d2; }
int a,b;
int** array;
};
int function(Foo &f)
{
f.array = new int*[f.a];
for (int i = 0;i<f.a;i++)
f.array[i] = new int[f.b];
// I don't know why you are returning int, probably doing something here....
}
Bien que je trouve une mauvaise idée, en fait, le function
pourrait être une méthode parameterless à la place:
class Foo {
public:
Foo(int d1, int d2)
{ a = d1; b = d2; }
void Create() // Or could do this right in the Constructor
{
array = new int*[a];
for (int i = 0;i<a;i++)
array[i] = new int[b];
}
private:
int a,b;
int** array;
};
encore c'est une mauvaise idée, parce que vous réinventez la roue, car il y a une classe parfaite dans la STL pour faire tout le travail pour vous:
vector< vector<int> > v; // Now v is a 2D array
Alors, quelle est votre question? –
Les gars, cette question a 6 minutes. Le questionneur est nouveau sur le site. Pensez à lui donner un peu plus de temps pour le réparer avant de l'abaisser/de le fermer dans l'oubli. –
J'ai ranger la question et j'ai voté pour rouvrir –