小编ima*_*agi的帖子

c ++继承 - 具有不同参数类型的相同方法名称

我正在尝试在VC++ 2010中编译以下代码:

class Base
{
public:
    std::wstring GetString(unsigned id) const
    {
        return L"base";
    }
};

class Derived : public Base
{
public:
    std::wstring GetString(const std::wstring& id) const
    {
        return L"derived";
    }
};

int wmain(int argc, wchar_t* argv[])
{
    Derived d;

    d.GetString(1);
}
Run Code Online (Sandbox Code Playgroud)

我的理解是Derived将有两种方法:

std::wstring GetString(unsigned id) const
std::wstring GetString(const std::wstring& id) const
Run Code Online (Sandbox Code Playgroud)

所以我的代码应该成功编译.但是,Visual C++ 2010会报告以下错误:

test.cpp(32): error C2664: 'Derived::GetString' : cannot convert parameter 1 from 'int' to 'const std::wstring &'
      Reason: cannot convert from 'int' to 'const std::wstring'
      No constructor …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance visual-studio-2010 visual-c++

4
推荐指数
1
解决办法
2052
查看次数

标签 统计

c++ ×1

inheritance ×1

visual-c++ ×1

visual-studio-2010 ×1