[英]C++17 and Overloaded functions
我有這個項目,我正在嘗試更新,以便可以在 VS2019 中使用 <filesystem> header。 當我將“C++ 語言標准”編譯器選項從“默認”更改為“/std:c++17”時,以下代碼會中斷:
class ATL_NO_VTABLE CAPropertyPage :
{
public:
struct INFO_STRUCT
{
INFO_STRUCT()
: deviceType(0)
, index(0)
{
};
bool operator ==(const CAtlString &str)
{
return name.CompareNoCase(str) == 0;
}
bool operator ==(const CString &str)
{
return name.CompareNoCase(str) == 0;
}
bool operator ==(const INFO_STRUCT &is)
{
return name.CompareNoCase(is.name) == 0;
}
CString name;
DWORD deviceType;
int index;
};
};
它使用 Default 編譯得非常好,但使用 /std:c++17 我收到以下錯誤消息:
error C2535: 'bool CAPropertyPage::INFO_STRUCT::operator ==(const ATL::CAtlString &)': member function already defined or declared
message : see declaration of 'CAPropertyPage::INFO_STRUCT::operator =='
所以似乎不支持重載的 function 選項。 使用 /std:c++17 編譯器選項時是否可以重載函數?
謝謝雷米勒博的回答。 CString 和 CAtlString 在 C++17 中似乎是同一個東西。 當我用 CAtlString 注釋掉重載版本時,它會編譯並允許第二次重載,因為它不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.