0
#include<iostream> 

using namespace std; 

class A{ 
     int *numbers[5]; 
     public: 
      void assignment(int ** x){ 
        for(int i=0;i<5;i++) 
          numbers[i]=x[i]; //not changing just the value of *numbers[i] but the pointer numbers[i] 
      } 
      void print(){ 
        for(int i=0; i<5;i++) 
          cout<< *numbers[i]<<endl; 
      } 
}; 

int main(){ 
    int *x[5]; 
    for(int i; i<5;i++){ 
      x[i]= new int(i); 
      cout<<*x[i]<<endl; 
    } 
    cout<<endl; 
    A numbers; 
    numbers.assignment(x); 
    numbers.print(); 
    return 0; 
} 

Мой вопрос очень конкретный. Я хочу сделать то же самое, что и код выше, но вместо передачи аргумента функции присваивания (int **) указателем, чтобы сделать это по ссылке. Как я могу это достичь?C++ Передача указателем и прохождение по ссылке

+0

Я немного озадачен вашим вопросом и принятым ответом. Если вы используете 'int * x [10]; ', вы не можете использовать его в качестве аргумента для' assign() '. Это то, чего вы надеялись достичь? –

+0

Ну, вопрос только для образовательных целей, и меня спросили в моем замешательстве о передаче по ссылке. Для этого конкретного примера он отвечает на мой вопрос, поскольку весь вопрос касается этого конкретного сегмента кода, и он работает. Это правда, что то, о чем вы говорите, нуждается в чем-то отличном от выбранного ответа. Кроме того, то, что вы сказали, также было проблемой для меня, и ответ получил позже. Благодарю. – user234562

ответ

4

Использование:

void assignment(int* (&x)[5]) ... 

редактировать: для комментария "если длина ... не была стандартной ...", вы можете использовать шаблон:

template<int N> void assignment(int* (&x)[N]) ... 

компилятор автоматически выводить N.

+0

Разве это не должно быть 'void присваивание (const int * (& x) [5]) ...' для этого случая? –

+0

Удивительный, спасибо. Если длина массива не была стандартной (в данном случае 5), как бы это сделать? – user234562

+0

: нет, потому что значения будут сохранены в no-const 'int * [5]' ... вы можете сказать 'void assigment (int * const (& x) [5])' и make 'x [i ] 'const, но' * numbers [i] 'будет no-const. – Zaskar

 Смежные вопросы

  • Нет связанных вопросов^_^