int f() {
return 1;
}
int b(int q = f()) {
return q;
}
};
Компилятор ругается, что при вызове f() нет объекта. Было бы логично this добавить. Но тож не пашет. А почему? Интуитивно я не наговнокодил. Можно ли как-то такое сделать?
Напиши static перед int f() и вызывай f как S::f()
Перегрузкой: int b() { b(f()); }
А в этом случае constexp не поможет?
Ну это упрощённый пример. В самом кейсе так нельзя.
Круто. Спасибо. А почему не пашет?
Потому что при вызове этой функции нет объекта, с которым это могло бы вызваться
Зачем явно указывать S::f()
Никак
А почему заюзать this тут невалидно? Почему нельзя сделать, чтобы это работало.
Он имел в виду для указания дефолта для параметра, там надо.
Потому что это другой объект,
Не так код воспринял
S s; int bb = s. b(42); s тут - this. А с чего параметр 42 должен относится к s? А может я хочу другой экземпляр S тут использовать?
Не должен. Что это ломает у меня, не понятно. Где вы хотите другой экземпляр S юзать, тоже не понял.
Ну точно можно на костылях, но там жёстко, но хочется же красиво...
порядок параметров не определен
Ок, давай так. У нас есть функция-член класса A. Она имеет четыре параметра. Первый - ссылка на объект класса B. Второй - ссылка на объект класса C. Третий - ссылка на объект класса D. четвёртый - ссылка на объект класса E. Каждый параметр имеет значение по умолчанию, которое вычисляется фунцией-членом классов. Так вот, расскажи, какого класса это должны быть функции по твоей логике ?
Не понимаю, зачем вы продолжаете. Вроде уже всё решили)
Обсуждают сегодня