在未初始化的数组

时间:2017-04-19 20:43:24

标签: c++ arrays qt

我在QT中宣布了一个信号:

signals:
 void onResult(int,int[],int,int);

和一个插槽:

public slots:
void onBinarySearchComplete(int valueToSearchFor, int array[], int  arraySize, int valueIndex); //this slot is connected to the onResult of the BinarySearch class.

我在MainWindow类中将数组声明为全局对象。

 int* m_array;

稍后动态分配内存,

//create a random array to search.
 int arraySize = 50;
 m_array = new int[arraySize];

然后我将数组传递给BinarySearch对象,该对象也是全局声明的。

 //call the search
 int returnVal= s->search(searchValue,m_array,arraySize); //the binarysearch class will emit the onResult signal when the search is complete.

在我的BinarySearch对象中,我对数组进行排序,然后在数组内部搜索元素。 我可以在调用emit之前将数组打印到qDebug()。

//this is the code that emits the signal in my BinarySearch class//
 qDebug()<<"Printing Array Just Before Emit";
 printArrayToDebug(array,arraySize);//the array is correct here!
 emit onResult(valueToSearchFor,array,arraySize,halfWayIndex);

此时,数组包含我已放入其中的元素,并且它是有序的。但是,当在插槽中接收到阵列时,阵列看起来是新的,并且充满了废话。

//This is the slot the receives the signal in my MainWindow class//
void MainWindow::onBinarySearchComplete(int valueToSearchFor, int  array[], int arraySize, int valueIndex){

//this array appears uninitialized!
for(int i=0;i<arraySize;i++){

    qDebug()<<array[i];
}

我认为在这种情况下C ++会将数组作为int *传递,并且这仍然有用。这是不正确的?如果是这样,我应该如何在这些对象之间正确传递这个数组呢?

0 个答案:

没有答案