我有一个类,其构造函数接受一个数组。这是:
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[])
,但仍然无效。
我已经读过无法复制内存块,因此应该引用或传递它的地址,但我不知道如何解决它。
答案 0 :(得分:1)
问题出在您发布的代码中,可能就是这样:
class Sorter {
int myArray[];
};
你应该这样做:
class Sorter {
int* myArray;
size_t mySize;
};