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

另外,你不能通过intunsigned 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 回答