C ++调用函数时出错

时间:2012-06-22 09:16:48

标签: c++

我有以下形式的函数定义(在大代码中):

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;

abc.func(s,DE::U, 0, idj);中调用函数func后,我得到了下面提到的错误。有人可以帮助找到并纠正错误。

我得到的错误是:

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

3 个答案:

答案 0 :(得分:4)

您应该阅读access specifiers

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

Abc::func()是私有的,因此无法从外部调用或引用。与DE中的枚举相同。

另外,如果需要int的引用,则无法通过unsigned int

答案 1 :(得分:2)

idj的类型为int;它应该unsigned int作为参数b传递。

答案 2 :(得分:2)

最后一个参数类型是对unsigned的引用。您正尝试将引用传递给int,这是一种不同的类型。

一旦你解决了这个问题,你会发现你无法调用该函数,因为它是私有的;同样,您无法访问DE::U,因为这也是私有的。 (更新:这是指在添加public访问说明符之前最初发布的问题。)