我有以下形式的函数定义(在大代码中):
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&)’
答案 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
访问说明符之前最初发布的问题。)