c++ - 为什么找不到函数重载?
问题描述
对不起,如果这是一个重复或愚蠢的问题。
但我无法编译以下 c++ 代码;(VS2017 更新 15.7.5)
class IInterface
{
public:
virtual void FnX(int) = 0;
virtual void FnX(int, int) = 0;
virtual void FnY(int) = 0;
};
class CClassBase : public IInterface
{
public:
virtual void FnX(int) override {}
virtual void FnX(int, int) override final {}
virtual void FnY(int) override final {}
};
class CClassX : public CClassBase
{
public:
virtual void FnX(int) override {}
};
void Foo()
{
CClassX x;
x.FnY(1);
x.FnX(2);
static_cast<CClassBase &>(x).FnX(3, 4);
static_cast<IInterface &>(x).FnX(5, 6);
x.FnX(7, 8);
}
最后一行x.FnX(7, 8);
不编译。编译错误:
错误 C2660:“CClassX::FnX”:函数不接受 2 个参数
谁能解释一下,为什么它不编译?FnX(int, int)
或为什么找不到函数重载?
解决方案
推荐阅读
- getter - 没有顶级 getter '_registerPlugins' 声明错误
- excel - Excel VBA尝试将数据从excel工作簿发送到另一个
- c# - 如何使用 Swagger codegen 生成具有接口的模型类以采用工厂模式
- c++ - 链接时未解决的循环问题 [cling 接口函数]
- python - PyGame边界碰撞检测不起作用
- python - 如何从合并列生成键数组:值
- solidity - 指定的输入源无效
- ruby-on-rails - Rails:如何创建数据库级别索引以支持'validates_uniqueness_of:user_id,范围:[:flaggable_id,:flaggable_type]'
- xamarin - 如何通过不使用 Android 选项来禁用共享单声道运行时?
- php - 如何在后台执行 PHP 脚本?