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

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

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

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

22 ответов

19 просмотров

Напиши 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. ...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта