C++ | Operator Overloading | Question 7

Last Updated :
Discuss
Comments
Output of following program? C
#include <iostream>
using namespace std;
class Test2
{
    int y;
};

class Test
{
    int x;
    Test2 t2;
public:
    operator Test2 ()  { return t2; }
    operator int () { return x; }
};

void fun ( int x) { cout << "fun(int) called"; }
void fun ( Test2 t ) { cout << "fun(Test 2) called"; }

int main()
{
    Test t;
    fun(t);
    return 0;
}
fun(int) called
fun(Test 2) called
Compiler Error: Ambiguous call to fun()
Share your thoughts in the comments