170 похожих чатов

Привет. Хочу сделать что-то такое: struct S {

int f() {
return 1;
}
int b(int q = f()) {
return q;
}
};

Компилятор ругается, что при вызове f() нет объекта. Было бы логично this добавить. Но тож не пашет. А почему? Интуитивно я не наговнокодил. Можно ли как-то такое сделать?

22 ответов

3 просмотра

Напиши static перед int f() и вызывай f как S::f()

Перегрузкой: int b() { b(f()); }

А в этом случае constexp не поможет?

Vanya-Khodor Автор вопроса
Anton Mershin
А в этом случае constexp не поможет?

Ну это упрощённый пример. В самом кейсе так нельзя.

Vanya-Khodor Автор вопроса
Alexander Karaev
Перегрузкой: int b() { b(f()); }

Круто. Спасибо. А почему не пашет?

Потому что при вызове этой функции нет объекта, с которым это могло бы вызваться

Зачем явно указывать S::f()

Никак

Vanya-Khodor Автор вопроса
Ilya Zviagin
Никак

А почему заюзать this тут невалидно? Почему нельзя сделать, чтобы это работало.

M
Зачем явно указывать S::f()

Он имел в виду для указания дефолта для параметра, там надо.

M
Аа понял

Не так код воспринял

Vanya Khodor
А почему заюзать this тут невалидно? Почему нельзя...

S s; int bb = s. b(42); s тут - this. А с чего параметр 42 должен относится к s? А может я хочу другой экземпляр S тут использовать?

Vanya-Khodor Автор вопроса
Ilya Zviagin
S s; int bb = s. b(42); s тут - this. А с чего...

Не должен. Что это ломает у меня, не понятно. Где вы хотите другой экземпляр S юзать, тоже не понял.

Ну точно можно на костылях, но там жёстко, но хочется же красиво...

порядок параметров не определен

Ок, давай так. У нас есть функция-член класса A. Она имеет четыре параметра. Первый - ссылка на объект класса B. Второй - ссылка на объект класса C. Третий - ссылка на объект класса D. четвёртый - ссылка на объект класса E. Каждый параметр имеет значение по умолчанию, которое вычисляется фунцией-членом классов. Так вот, расскажи, какого класса это должны быть функции по твоей логике ?

Vanya-Khodor Автор вопроса
Ilya Zviagin
Ок, давай так. У нас есть функция-член класса A. ...

Не понимаю, зачем вы продолжаете. Вроде уже всё решили)

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
49
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
Народ, с прошедшими и наступающими. Ща полную ересь прогоню, но фишка в том, что это не обычная алкогольная ересь Либера, а я реально хз что делать. Сайт с 2012-го года Косяк...
Alexey Liber
2
Карта сайта