我正在尝试在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)