Что означает странный синтаксис в c ++ - PullRequest
3 голосов
/ 04 августа 2020

В Unreal Project у меня есть такая строка:

class USpringArmComponent* CameraBoom

и

class UCameraComponent* FollowCamera

И я никогда не видел этого синтаксис в c ++. Что это значит?

Ответы [ 2 ]

7 голосов
/ 04 августа 2020

Это подробный описатель типа :

https://en.cppreference.com/w/cpp/language/elaborated_type_specifier

4 голосов
/ 04 августа 2020

Это просто говорит компилятору, что UCameraComponent - это класс. Больше ничего. Это похоже на то, как в C вы помещаете struct перед объявлением любых структурных переменных.

Этот синтаксис полезен, когда у вас есть некоторый беспорядочный код (или чтобы подробно передать разработчику, что это класс).

Например:

class counter
{
// bla bla bla...
};

void foo()
{
    int counter = 0; // Oops someone declared a variable called counter.
                     // How am I going to declare a variable of type `counter`?4
    // counter actual_counter; // Syntax error: expected ';' after expression.
                               //Because counter is a variable
    class counter actual_counter; // You prepend `class` to the deceleration
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...