将数组传递给构造函数不起作用

时间:2014-11-09 09:38:46

标签: c++ arrays constructor

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

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[]),但仍然无效。

我已经读过无法复制内存块,因此应该引用或传递它的地址,但我不知道如何解决它。

1 个答案:

答案 0 :(得分:1)

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

class Sorter {
  int myArray[];
};

你应该这样做:

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