MSVS 2015,C++,使用参数调用构造函数会导致错误

萨里曼

我在 MS Visual Studio 2015 上面临以下问题。

我有一个Hotel带有重载构造函数类,它接受一个字符串参数。当我尝试创建一个使用重载而不是默认构造函数的对象时,编译器面临以下错误:

Error C2664 'std::Hotel::Hotel(const std::Hotel &)': cannot convert argument 1 from 'const char [7]' to 'const std::Hotel &'

酒店.h

namespace std {
    class Hotel {
    public:
        string hotelName;                       // Hotel's name.

        Hotel();            // Default constructor.
        Hotel(string);      // Overloaded constructor.
        ~Hotel();           // Default destructor.
    };

}

酒店.cpp

namespace std {

    Hotel::Hotel() { // // Default constructor.
    }

    Hotel::Hotel(string name) { // // Overloaded constructor.
        hotelName = name;
    }
}

主程序

int main() {
    Hotel Palace("Palace");
}

在我所做的搜索中,我看到 MSVS 对字符串使用了两种方法。我发现的类似问题的解决方案是"Palace"投入Hotel Palace(_T("Palace"));

当我尝试从重载构造函数创建一个对象时,会发生同样的事情,该构造函数的类型不是字符串作为参数。

这是否与 MSVS 有明确关系,还是我做错了什么?

任何帮助,将不胜感激。

重的

您的代码中存在一些可能导致此错误的问题。

首先,不要使用namespace std {...}.

using std::string
using std::cout

反而。您也可以使用using namespace std,但不推荐这样做。Hotel(std::string)也不错。

其次,您应该explicit在构造函数中使用修饰符:

explicit Hotel(string);

这将防止一些意外的转换错误。

您还应该使用Hotel(const string&)代替Hotel(string). 这将防止不需要的参数临时副本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

gcc中的错误,或clang / MSVS中的扩展

来自分类Dev

MSVS 2012 Express-Boost-链接器错误LNK2019

来自分类Dev

用MSVS2012和两个“ ;;”编译C代码

来自分类Dev

了解MSVS C ++编译器优化

来自分类Dev

在C语言中,使用指向结构的指针来调用结构内部指向的函数会导致段错误

来自分类Dev

DLL编程(C ++ | MSVS)虚拟和派生

来自分类Dev

在C / C ++ DLL中导出MSVS 2013中的函数以供Mozilla js-ctypes使用

来自分类Dev

静态成员初始化中模板参数名称的C ++ 11 MSVS与GCC可见性

来自分类Dev

glfw和MSVS 2012的链接器错误

来自分类Dev

C ++使用匿名对象调用函数会导致编译器错误

来自分类Dev

有什么方法可以使用MSVS2015模拟编译时双常量?

来自分类Dev

MSVS。执行测试时,如何告诉NUnit使用/ noshadow参数?

来自分类Dev

为什么在C ++中调用此虚拟函数会导致基类出现“缺少符号”错误?

来自分类Dev

带有constexpr成员函数的constexpr构造函数调用的C ++ VS2015 constexpr编译错误

来自分类Dev

使用扩展参数调用Delphi函数时发生C ++错误

来自分类Dev

使用MSVS避免模板化本征函数中的参数不明确

来自分类Dev

调用重载的构造函数会产生歧义错误C ++

来自分类Dev

C ++ 20概念测试在MSVS 16.5中不起作用

来自分类Dev

C ++:使用运算符=调用多参数构造函数

来自分类Dev

从C调用带有函数参数的Rust函数会导致SegFault

来自分类Dev

C ++错误构造函数参数

来自分类Dev

在C / C ++ DLL中导出MSVS 2013中的函数以供Mozilla js-ctypes使用

来自分类Dev

C ++参数化的构造函数错误

来自分类Dev

使用dllimport收到的空指针[MSVS C ++ 2010]

来自分类Dev

如何获取自C ++(MSVS)以来的本地当前时间(以秒为单位)?

来自分类Dev

如何在MSVS Community 2015中提取接口(14.0.25123.00)

来自分类Dev

使用扩展参数调用Delphi函数时发生C ++错误

来自分类Dev

MSVS 别名错误 C2988 (C++)

来自分类Dev

如何在我的 C++ 代码中包含 wx (MSVS 2019)

Related 相关文章

  1. 1

    gcc中的错误,或clang / MSVS中的扩展

  2. 2

    MSVS 2012 Express-Boost-链接器错误LNK2019

  3. 3

    用MSVS2012和两个“ ;;”编译C代码

  4. 4

    了解MSVS C ++编译器优化

  5. 5

    在C语言中,使用指向结构的指针来调用结构内部指向的函数会导致段错误

  6. 6

    DLL编程(C ++ | MSVS)虚拟和派生

  7. 7

    在C / C ++ DLL中导出MSVS 2013中的函数以供Mozilla js-ctypes使用

  8. 8

    静态成员初始化中模板参数名称的C ++ 11 MSVS与GCC可见性

  9. 9

    glfw和MSVS 2012的链接器错误

  10. 10

    C ++使用匿名对象调用函数会导致编译器错误

  11. 11

    有什么方法可以使用MSVS2015模拟编译时双常量?

  12. 12

    MSVS。执行测试时,如何告诉NUnit使用/ noshadow参数?

  13. 13

    为什么在C ++中调用此虚拟函数会导致基类出现“缺少符号”错误?

  14. 14

    带有constexpr成员函数的constexpr构造函数调用的C ++ VS2015 constexpr编译错误

  15. 15

    使用扩展参数调用Delphi函数时发生C ++错误

  16. 16

    使用MSVS避免模板化本征函数中的参数不明确

  17. 17

    调用重载的构造函数会产生歧义错误C ++

  18. 18

    C ++ 20概念测试在MSVS 16.5中不起作用

  19. 19

    C ++:使用运算符=调用多参数构造函数

  20. 20

    从C调用带有函数参数的Rust函数会导致SegFault

  21. 21

    C ++错误构造函数参数

  22. 22

    在C / C ++ DLL中导出MSVS 2013中的函数以供Mozilla js-ctypes使用

  23. 23

    C ++参数化的构造函数错误

  24. 24

    使用dllimport收到的空指针[MSVS C ++ 2010]

  25. 25

    如何获取自C ++(MSVS)以来的本地当前时间(以秒为单位)?

  26. 26

    如何在MSVS Community 2015中提取接口(14.0.25123.00)

  27. 27

    使用扩展参数调用Delphi函数时发生C ++错误

  28. 28

    MSVS 别名错误 C2988 (C++)

  29. 29

    如何在我的 C++ 代码中包含 wx (MSVS 2019)

热门标签

归档