我需要返回一个数组及其大小:
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 from 'int' to 'int*' [-fpermissive]
我该怎么做?
最佳答案
因为 NULL 可能被定义为:
#define NULL 0
表达式make_pair(NULL,-1)
变成 make_pair(0, -1)
, 所以它创建了 pair<int, int>
.例如,您可以使用 nullptr
如果可用或 (int*)NULL
否则。
关于c++ - C++中成对的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14409170/