我不知道为什么我得到一个"错误C2660:'SubClass :: Data':函数不带2个参数".当我尝试编译我的项目时.
我有一个基类,其中包含一个名为data的函数.该函数接受一个参数,数据重载需要2个参数.在我的subClass中,我覆盖了带有1个参数的数据函数.现在,当我尝试从指向subClass的指针调用数据的重载时,我收到上面的编译错误.
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.
}
Run Code Online (Sandbox Code Playgroud)
在C++编程语言由Bjarne Stroustrup的(第 392,第2版):
15.2.2继承和使用声明
重载解析不适用于不同的类范围(第7.4节)......
您可以使用限定名称访问它:
void SomeOtherFunction()
{
SubClass* test = new SubClass();
test->Base::Data(1, 1);
}
Run Code Online (Sandbox Code Playgroud)
或者通过添加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);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2193 次 |
最近记录: |