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>。たとえば、nullptrif available または(int*)NULLそれ以外の場合に使用できます。

于 2013-01-18T23:20:45.050 に答える