私は特定のサイズの配列を作成し、その配列を1つ拡張するプログラムを作成しようとしています。また、関数呼び出しの前に最初の配列を、関数呼び出しの後に新しい配列を表示する必要があります。標準整数配列またはユニークなポインタ配列をオーバーロードせずに使用する関数を作成するにはどうすればよいですか?
#include <iostream>
#include <memory>
using namespace std;
unique_ptr<int[]> newCopy(int arry[], int items)
{
unique_ptr<int[]> p(new int[items + 1]);
p[0] = 0;
for (int i = 0; i < items; i++)
{
p[i + 1] = arry[i];
}
return p;
}
void displayArry(int arry[], int items)
{
for (int i = 0; i < items; i++)
{
cout << arry[i] << " ";
}
cout << endl;
}
int main()
{
const int SIZE = 5;
int myNumbers[SIZE] = {18, 27, 3, 14, 95};
displayArry(myNumbers, SIZE);
unique_ptr<int[]> newArry = newCopy(myNumbers, SIZE);
//displayArry(newArry, SIZE + 1);
for (int i = 0; i < SIZE+1; i++)
{
cout << newArry[i] << " ";
}
return 0;
}
Iは、関数をオーバーロードすることなく、通常の整数配列とスマートポインタ配列の両方を表示する表示機能を希望。
表示機能は、ほとんどの場合、標準の整数配列に対してのみ機能します。 main関数の中でforループを使用すると、拡張関数が機能し、新しい一意のポインタ配列が正しい値を表示しますが、表示関数で両方の関数を使用する方法を見つけることができません。