none
0 在转换构造函数的数据类型 RRS feed

  • 问题

  • 类Abc有两个转换构造函数:

    Abc(long)

    Abc(const char *)

    在程序中有如下代码:

    Abc a("0");

    cout << a == 0 << endl;

    编译器提示0有两个转换构造函数,

    Abc(long)

    Abc(const char *)

    conversion from `int' to `const Abc' is ambiguous

    请问如何避免谢谢。

     

    2011年5月11日 1:29

答案

全部回复

  • 很多时候为了避免隐式转换,C++引入了explicit关键字
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年5月11日 1:43
    版主
  • Abc a("0");

    long l = 0;

    cout << a == l << endl;


    麻烦把正确答案设为解答。
    2011年5月11日 2:00
    版主
  • explicit解决的是隐式转化,对于下面表达式

       Abc var1(100);

       cout << var1 + 0 << endl;

    可以解决问题。

    但对于

        Abc myVar(0);

    这个表达式,编译器还是不知所错,该怎么解决呢??谢谢!

    2011年6月4日 2:51