S_Flash
Кто-то может расшифровать конструкцию:
Код:
((UI*)client)->send(uiTXT::VisualData, {
{"coll", col.num},
{"row", (int)row.side}
});
1) Понятно, что это вызов метода внутри класса с 2мя параметрами, первый - статический, другой напоминает статический обьект из JavaScript! Что это за тип?
2) ну и самое загадочное для меня ((UI*)client). Это какой-то хитрый указатель? Почему звёздочка стоит после слова UI?
DF™
S_Flash писал:
2) ну и самое загадочное для меня ((UI*)client). Это какой-то хитрый указатель? Почему звёздочка стоит после слова UI?
это привод client к типу UI
Обычно такое используется когда в функцию передается переменная типа void *, а в функции она уже приводится к нужному типу.
void *ThreadCatGidsInit(void *PRSi) {
TProcRotStsi *Pi = (TProcRotStsi*)PRSi;
..
}
S_Flash
DF™: как-то так и подозревал, но почему звёздочка после UI?
Дело в том, что пусть тип был бы адресу указателя UI (хотя я не уверен, что так можно), мы бы его разыменовывали так *UI. Но в данном случае UI*?! Может уже просто в c++ придумали указатели на типы и они именно так передаются!
DF™
S_Flash писал:
DF™: как-то так и подозревал, но почему звёздочка после UI?
Дело в том, что пусть тип был бы адресу указателя UI (хотя я не уверен, что так можно), мы бы его разыменовывали так *UI. Но в данном случае UI*?! Может уже просто в c++ придумали указатели на типы и они именно так передаются!
Справа потому что это приведение к типу.
Когда звездочка слева это, это берем значение по адресу
void func(char **str) {
*str=strdup("test");
..
}
char *text;
func(&text);
puts(text);
>> test