0

次の形式の関数定義があります (大きなコード内):

class Abc{
 public:
 bool func(const std::string& text,::DE::d type,unsigned a,unsigned& b);
 };

ここで、DE は次の形式のクラスです。

class DE
{
   public:
   enum d{U,L};

};

現在、次の形式で関数を呼び出しています。

string s;
unsigned st=0;
int idj;
cout<<"\n Enter the value of string:";
cin>>s;
Abc abc;
abc.func(s,DE::U, 0,  idj); 
cout<<idj;

関数 func を呼び出すと abc.func(s,DE::U, 0, idj);、以下のエラーが発生します。誰かがエラーを見つけて修正するのを手伝ってくれるほど親切にできますか.

私が得ているエラーは次のとおりです。

   error: no matching function for call to ‘Abc::func(std::string&, DE::U, unsigned int&, int&)’
4

3 に答える 3

4

アクセス指定子について読む必要があります。

class Abc{
 bool func(const std::string& text,::DE::d type,unsigned a,unsigned& b);
};

Abc::func()非公開のため、外部から呼び出したり参照したりすることはできません。の列挙型と同じDEです。

intさらに、への参照が必要な場合、 を渡すことはできませんunsigned int

于 2012-06-22T09:22:17.323 に答える
2

idjタイプintです。unsigned intパラメータとして渡す必要がありますb

于 2012-06-22T09:20:47.650 に答える
2

最後のパラメータ タイプは への参照unsignedです。への参照を渡そうとしていますがint、これは異なる型です。

これを修正すると、関数はプライベートであるため呼び出すことができないことがわかります。DE::U同様に、これも非公開であるためアクセスできません。(更新public:これは、アクセス指定子が追加される前に、最初に投稿された質問を指します。)

于 2012-06-22T09:22:21.387 に答える