Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: C++ вопрос синтаксиса
цитата
05/12/17 в 12:02
 S_Flash
Кто-то может расшифровать конструкцию:
Код:

((UI*)client)->send(uiTXT::VisualData, {
          {"coll", col.num},
          {"row", (int)row.side}
        });

1) Понятно, что это вызов метода внутри класса с 2мя параметрами, первый - статический, другой напоминает статический обьект из JavaScript! Что это за тип?
2) ну и самое загадочное для меня ((UI*)client). Это какой-то хитрый указатель? Почему звёздочка стоит после слова UI?
цитата
05/12/17 в 12:52
 labintech
Это надо смотреть тут
цитата
05/12/17 в 15:06
 DF™
S_Flash писал:

2) ну и самое загадочное для меня ((UI*)client). Это какой-то хитрый указатель? Почему звёздочка стоит после слова UI?


это привод client к типу UI
Обычно такое используется когда в функцию передается переменная типа void *, а в функции она уже приводится к нужному типу.

void *ThreadCatGidsInit(void *PRSi) {
TProcRotStsi *Pi = (TProcRotStsi*)PRSi;
..
}
цитата
05/12/17 в 16:19
 S_Flash
DF™: как-то так и подозревал, но почему звёздочка после UI?
Дело в том, что пусть тип был бы адресу указателя UI (хотя я не уверен, что так можно), мы бы его разыменовывали так *UI. Но в данном случае UI*?! Может уже просто в c++ придумали указатели на типы и они именно так передаются! icon_wink.gif
цитата
05/12/17 в 18:53
 DF™
S_Flash писал:
DF™: как-то так и подозревал, но почему звёздочка после UI?
Дело в том, что пусть тип был бы адресу указателя UI (хотя я не уверен, что так можно), мы бы его разыменовывали так *UI. Но в данном случае UI*?! Может уже просто в c++ придумали указатели на типы и они именно так передаются! icon_wink.gif


Справа потому что это приведение к типу.
Когда звездочка слева это, это берем значение по адресу
void func(char **str) {
*str=strdup("test");
..
}

char *text;
func(&text);
puts(text);
>> test


Эта страница в полной версии