я хочу получить такой класс:
class A{
int a;
int b;
int c;
A():a(),b(),c(){};
A(int ia,int ib,int ic=ia+ib):a(ia),b(ib),c(ic){}; //this is what i need
};
Я хочу, чтобы значение по умолчанию ic было рассчитано на основе ia и ib, код здесь получит ошибку при компиляции.
Интересно, есть ли способ получить что-то подобное?
Благодарю.
Просто добавьте еще одну перегрузку конструктора:
A(int ia, int ib)
: a(ia), b(ib), c(ia + ib) {}
A(int ia, int ib, int ic)
: a(ia), b(ib), c(ic) {}
Для более сложной инициализации вы можете избежать повторения, используя делегирующий конструктор C ++ 11:
A(int ia, int ib)
: A(ia, ib, ia + ib) {}
A(int ia, int ib, int ic)
: a(ia), b(ib), c(ic) {}
Вы можете просто построить конструктор по умолчанию с необходимыми значениями или просто перегрузить, добавив другой конструктор. Значения будут назначены после того, как вы его выполнили.
A (int ia, int ib, int ic): a(ia), b(ib), c(ic) {}
Прочтите эту ссылку, если вам нужна дополнительная помощь в настройке конструктор по умолчанию.