c++中的指针对

Pointer in a pair in C++

本文关键字:指针 c++      更新时间:2023-10-16

我需要返回一个数组和它的大小:

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: error: invalid conversion从'int'到'int*' [-fpermissive]

我该怎么做?

由于NULL可能定义为:

#define NULL 0

表达式make_pair(NULL,-1)变成make_pair(0, -1),因此它产生pair<int, int>。例如,如果可用,可以使用nullptr,否则可以使用(int*)NULL