0

我需要返回一个数组及其大小:

pair<int*, int> load(string path,int * memory){
    ifstream handle;
    int container;
    int size = 0; 

    if(!handle){
        QMessageBox::warning(0, QString(""), "file cannot be loaded");
        return make_pair(NULL,-1);
    }

    handle.open(path.c_str());
    while(!handle.eof()){
        handle >> container;
        size++;
    }
    size--;
    if(!size){
        QMessageBox::warning(0, QString(""), "file is empty");
        return make_pair(NULL,-1);
    }
    memory = new int[size]; 

    handle.clear();
    handle.seekg(0, ios::beg);

    for(int i = 0; i < size; i++){
        handle >> memory[i];
    }
    handle.close();
    return make_pair(memory, size);
}

错误输出为:

/usr/include/c++/4.6/bits/stl_pair.h:109:错误:从“int”到“int*”的无效转换 [-fpermissive]

我该怎么做?

4

1 回答 1

3

由于 NULL 可能定义为:

#define NULL 0

表达式make_pair(NULL,-1)变为make_pair(0, -1),所以它创建pair<int, int>。例如nullptr,如果可用或(int*)NULL其他方式,您可以使用。

于 2013-01-18T23:20:45.050 回答