将数组传递给构造函数无效

Passing array to a constructor does not work

本文关键字:构造函数 无效 数组      更新时间:2023-10-16

我有一个类,它的构造函数接受数组。这是:

Sorter::Sorter(int arr[]) : myArray(arr[])
{
}

这是标题:

class Sorter
{
protected :
    int* myArray[];
public :
    Sorter(int* arr[]);
public :
    int Bubble();
};

我这样称呼它:

int ar[] = { 15, 5, 8 };
    Sorting srt(&ar);
    srt.Bubble();

但它抛出了以下错误:

1>c:users..Sorter.h(12): warning C4200: nonstandard extension used : zero-sized array in struct/union
1>          Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array

我还将声明从..(int arr[])更改为..(int* arr[]),但它仍然不起作用。

我读到内存块无法复制,因此应该引用它或将其传递给它地址,尽管我不知道如何解决它。

问题出在您尚未发布的代码中,可能是这样的:

class Sorter {
  int myArray[];
};

你应该这样做:

class Sorter {
  int* myArray;
  size_t mySize;
};