首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++17和重载函数

C++17和重载函数
EN

Stack Overflow用户
提问于 2020-04-09 04:32:44
回答 1查看 112关注 0票数 0

我有一个正在尝试更新的项目,这样我就可以在VS2019中使用< filesystem>头文件。当我将"C++ Language Standard“编译器选项从"Default”更改为"/std:c++17“时,以下代码中断:

代码语言:javascript
复制
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;
  };
};

它在默认情况下编译得很好,但在使用/std:c++17时我得到了以下错误消息:

代码语言:javascript
复制
error C2535: 'bool CAPropertyPage::INFO_STRUCT::operator ==(const ATL::CAtlString &)': member function already defined or declared
message : see declaration of 'CAPropertyPage::INFO_STRUCT::operator =='

因此重载函数选项似乎不受支持。在使用/std:c++17编译器选项时,是否有可能重载函数?

EN

回答 1

Stack Overflow用户

发布于 2020-04-09 05:35:42

谢谢你雷米·勒博的回答。在C++17中,CString和CAtlString似乎是一回事,当我用CAtlString注释掉重载的版本时,它会编译并允许第二个重载,因为它们是不同的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61109533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档