C++ ambiguous overload for ‘operator ’

前端 未结 3 626
你的背包
你的背包 2021-02-14 08:38

I\'v read several posts here about this kind of errors, but I wasn\'t able to solve this one... Has soon I define the operator int and the function f, fails to compile. I teste

3条回答
  •  花落未央
    2021-02-14 09:34

    You don't seem to have posted the code that actually causes the error. I guess it looks something like

    Fraccao a;
    Fraccao b = a + 4;
    Fraccao c = 4 + a;
    

    The problem is that your class allows implicit conversions both to and from int; so a + 4 could be either

    int(a) + 4
    

    or

    a + Fraccao(4)
    

    with no reason to choose one over the other. To resolve the ambiguity, you could either:

    • make the conversion explicit, as above; or
    • declare either the constructor or the conversion operator (or even both) explicit so that only one (or even neither) conversion can be done implicitly.

提交回复
热议问题