Неявный приведение через конструктор с несколькими аргументами - PullRequest
0 голосов
/ 30 сентября 2010

Если у меня есть эти 2 конструктора для MyClass:

MyClass(int n1);
MyClass(int n1, int n2);

и перегруженный (не член) operator+:

MyClass operator+(MyClass m1, const MyClass& m2);

Это позволяет мне написать код, подобный этому:

MyClass m;
5 + m:

который, я думаю, использует неявное приведение через определенный конструктор, верно?

Есть ли способ сделать это неявное приведение с конструктором, принимающим 2 аргумента? Код выглядит примерно так:

MyClass m;
{15, 8} + m:

Или, может быть, просто выполнить явное приведение из {9, 4} к MyClass объекту?

Ответы [ 3 ]

5 голосов
/ 30 сентября 2010

Одним словом, нет. Наиболее краткий вариант - MyClass(15,8) + m;.

1 голос
/ 30 сентября 2010

Нет, но вы можете построить на месте:

MyClass m;
m + MyClass(15,8);
0 голосов
/ 30 сентября 2010

Я так не считаю, но зачем вам это должно быть неявным, а не явным?Если вам все равно придется использовать скобочную запись, это не то, что можно сгенерировать из одной переменной, поэтому я не верю, что есть простое выражение:

myclass(15, 8) + m;

Это сгенерирует его в стеке и даст тот же результат, что и неявное приведение.

...