Ошибка указателя в паре

Мне нужно вернуть массив объявлений, его размер:

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]

Как мне это сделать?

0

Решение

Поскольку NULL, вероятно, определяется как:

#define NULL 0

выражение make_pair(NULL,-1) становится make_pair(0, -1)так это создает pair<int, int>, Вы можете, например, использовать nullptr если доступно или (int*)NULL иначе.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]