Конвертирующий конструктор не принимает список в скобках

Поэтому, пока я возился с конструкторами, я сделал этот код:

class super
{
public:
int duper, duperer;

friend ostream& operator << (ostream&, super&);
friend super operator+ (super& uno, super& dos);
friend int main();
super() {};
super(int);
super(int, int);
};

ostream& operator << (ostream& out, super& Sout)
{
cout << "The " << Sout.duper << " and the " << Sout.duperer << " are super!" << endl;
return out;
}

super operator+ (super& uno, super& dos)
{
return { uno.duper + dos.duper , uno.duperer + dos.duperer };
}super::super(int duper) : duper(duper) {};
super::super(int dupster, int pupster) : duper(pupster), duperer(dupster)     {};

int main()
{

super Supper = { -1, 0 }, Copper(1, 1);
Supper = super(3, 3) + Copper;
cout << Supper << "!!!\n";
}

Все работает правильно, и initializer_list каждый раз преобразуется в объект моего типа. Однако, когда я делаю это (изменяю конструктор для списка скобок в основном):

class super
{
public:
int duper, duperer;

friend ostream& operator << (ostream&, super&);
friend super operator+ (super& uno, super& dos);
friend int main();
super() {};
super(int);
super(int, int);
};

ostream& operator << (ostream& out, super& Sout)
{
cout << "The " << Sout.duper << " and the " << Sout.duperer << " are super!" << endl;
return out;
}

super operator+ (super& uno, super& dos)
{
return { uno.duper + dos.duper , uno.duperer + dos.duperer };
}super::super(int duper) : duper(duper) {};
super::super(int dupster, int pupster) : duper(pupster), duperer(dupster)     {};

int main()
{

super Supper = { -1, 0 }, Copper(1, 1);
Supper = {3, 3} + Copper;
cout << Supper << "!!!\n";
}

…код не компилируется. Почему в этот раз фигурный список не преобразуется в объект?

Большое спасибо и, пожалуйста, не сердитесь на имена, которые я здесь использовал. Я просто хотел убедиться, что все достаточно запутанно.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]