Мне нужно вернуть массив объявлений, его размер:
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]
Как мне это сделать?
Поскольку NULL, вероятно, определяется как:
#define NULL 0
выражение make_pair(NULL,-1)
становится make_pair(0, -1)
так это создает pair<int, int>
, Вы можете, например, использовать nullptr
если доступно или (int*)NULL
иначе.
Других решений пока нет …