我不知道为什么我收到“错误 C2660:'SubClass::Data':函数不接受 2 个参数”。当我尝试编译我的项目时。
我有一个带有名为 data 的函数的基类。该函数采用一个参数,Data 的重载采用 2 个参数。
在我的子类中,我重写了带有 1 个参数的数据函数。现在,当我尝试从指向子类的指针调用数据重载时,我收到上述编译错误。
class Base : public CDocument
{
public:
virtual CString& Data( UINT index);
CString Data(UINT index, int pos);
};
class SubClass : public Base
{
public:
virtual CString& Data(UINT index);
};
Void SomeOtherFunction()
{
subType* test = new subType();
test->Data( 1, 1);// will not compile
((Base*)test)->Data(1,1); // compiles with fine.
}
C++ 编程语言作者:比亚恩·斯特鲁斯特鲁普 (Bjarne Stroustrup)p.392,第二版):
15.2.2 继承和使用声明
重载解析不适用于不同的类范围(第 7.4 节)……
您可以使用限定名称访问它:
void SomeOtherFunction()
{
SubClass* test = new SubClass();
test->Base::Data(1, 1);
}
或者添加一个 using 声明SubClass
:
class SubClass : public Base
{
public:
using Base::Data;
virtual CString& Data( UINT index);
};
void SomeOtherFunction()
{
SubClass* test = new SubClass();
test->Data(1, 1);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)