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 **)の引数をポインターで渡す代わりに、参照によって行います。どうすればそれを達成できますか?

4

1 に答える 1

4

使用する:

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

編集:「長さが...標準ではなかった場合...」というコメントについては、テンプレートを使用できます:

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

コンパイラは自動的に N を推定します。

于 2014-12-12T18:12:33.827 に答える