1. ホーム
  2. c++

[解決済み] クラスメンバに一致する関数呼び出しがない

2022-02-26 16:25:46

質問

汎用リストを実装して、リストのある位置からデータを取り出そうとしているのですが、うーん...エラーが出てしまいます: No matching function for call to 'List::retrieve(int&, Record&) 以下は、main.cppのコードと、List.hから関数を取り出すスニペットである。

main.cpp

#include <iostream>
#include "List.h"    
#include "Key.h"
using namespace std;
typedef Key Record;
int main()
{
    int n;
    int p=3;
    List<int> the_list;
    Record data;
    cout<<"Enter the number of records to be stored. "<<endl;
    cin>>n;
    for(int i=0;i<n;i=i++)
    {
    the_list.insert(i,i);
    }
    cout<<the_list.size();
    the_list.retrieve(p, data);
    cout<<"Record value: "<<data;
    return 0;
}

List.h

Error_code retrieve(int position, List_entry &x)const
    {
    if(empty()) return underflow;
    if(position<0 || position>count) return range_error;
    x=entry[position];
    return success;
    }

フルコードについては

Main.cpp: http://pastebin.com/UrBPzPvi

List.h: http://pastebin.com/7tcbSuQu

P.S 私は基本を学んでいるところなので、大規模な再利用可能なモジュールに関して、コードは完璧ではないかもしれません。現段階では、ただ動くことが必要です。

ありがとうございます。

解決方法は?

data の第2引数として渡そうとしている。 retrieve の型である。 Record .

の第2パラメータは retrieveList_entry でなく Record .

コンパイラーが「一致する関数がありません」と言った場合、それは通常、使用した名前の関数が見つかったものの、その関数に渡そうとしている引数の1つ以上が誤った型であるか、関数に渡そうとしている引数の数が誤っていることを意味します。