函数重载时出现歧义错误
ambiguity error in function overloading
class overload
{
void func(int x)
{
cout<<"pass by valuen";
}
public:void func(int &x)
{
cout<<"pass by referencen";
}
};
main()
{
overload b1;
b1.func(10);
}
我将一个函数设为私有,另一个同名函数设为公共。现在在主要只有一个函数是可见的,那么为什么编译器给出歧义错误,当我试图访问这个函数??
在检查函数的访问权限之前进行重载解析。这是无关的,一个是private
-重载解析仍然是模糊的。
重载解析在访问控制之前完成。编译器查找名称为func()
的所有函数,并尝试解析为最可行的重载。可见性在这个阶段没有被考虑。
相关文章:
- C++17 中的歧义错误(模板模板参数和默认参数问题)
- 运算符的歧义错误<<自定义 std::ostream 子类中的重载
- 了解函数错误的歧义新声明
- 在C 中,静态成员函数是否继承了?如果是,为什么没有出现歧义错误
- 在 c++ 中使用重载的歧义错误
- 转换 - 错误 E2015,AnsiString(char) 和 AnsiString(short) 之间的歧义
- C++代码中出现歧义错误
- 可变模板和混合的歧义错误
- 错误:"std::copy "之间的重载歧义
- c++操作符string和char*导致歧义错误
- 使用c++ Builder 10 Seattle有很多歧义错误
- c++歧义符号错误
- 函数重载时出现歧义错误
- c++矢量错误,显示变量有歧义-我已经尝试了一切仍然没有希望
- 为什么这两个构造函数一起不会产生歧义错误?
- C2870符号歧义错误
- 由于模板函数声明中存在歧义而导致错误
- 与第三方头文件相关的C++Builder歧义错误
- 模板类相互使用会产生歧义错误
- 错误:对旧声明“double-round(double)”存在歧义