Я не уверен, если эта работа, потому что ваш вопрос и код не то же самое, в соответствии с вашим кодом функция может иметь 3 параметра, так что это будет работать:
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....
}
Однако ваш вопрос говорит что ваша функция может принимать только один параметр, так:
- если размеры известны во время компиляции, то Fred's Answer является лучшим (он очаровал меня на самом деле! :)).
- Если нет, я не вижу никакого возможного решения, которое позволяет передавать более одного заданного пользователем значения, кроме инкапсуляции всех этих значений в один объект.
Как это:
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....
}
Хотя я считаю, это плохая идея, ведь function
может быть метод без параметров вместо:
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;
};
Тем не менее, это плохая идея, потому что вы изобретаете колесо, так как в STL есть идеальный класс, чтобы выполнить всю работу за вас:
vector< vector<int> > v; // Now v is a 2D array
Итак, каков ваш вопрос? –
Ребята, этот вопрос составляет 6 минут. Вопроситель является новым на сайте. Пожалуйста, подумайте о том, чтобы дать ему немного времени, чтобы исправить это до того, как он запустил/закрыл его в забвение. –
Я прибрал вопрос и проголосовал за повторное открытие –