указатель функции участника: рассеивать правильный синтаксис
При работе с указателями функции члена важно придерживаться правильного синтаксиса, чтобы обеспечить успешное выполнение. Давайте углубимся в типичную проблему, возникающую при попытке вызвать функцию члена через указатель функции члена и предоставить необходимое решение.
фрагмент ошибочного кода:
class cat { public: void walk() { printf("cat is walking \n"); } }; int main(){ cat bigCat; void (cat::*pcat)(); pcat = &cat::walk; bigCat.*pcat(); }
ошибка компиляции: bigcat.*Pcat (); Оператор генерирует ошибку.
решение:
Ключ для решения этой проблемы заключается в обеспечении выражения BIGCAT.*PCAT () имеет соответствующее приоритет. Приоритет оператора диктует, что у неаровных операторов есть приоритет над бинарными операторами. Таким образом, скобки необходимы для определения приоритетов функции Call () над операцией привязки к указателю к члену.*. ^ ^
(bigCat.*pcat)(); ^ ^
Caleteses можно использовать для управления приоритетом оператора и обеспечения правильного порядка выполнения.
]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3