Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 23.11.2019
Сообщений: 14
1

ООП в си++

02.03.2020, 20:00. Показов 1240. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, изучал UE4 и встретил такой код:
class UCameraComponent* Camera;
UCameraComponent - тоже является классом. До этого при изучении с++ ни разу не встречал подобную конструкцию
можете объяснить код?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2020, 20:00
Ответы с готовыми решениями:

Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП
Скиньте пожалуйста источники с задачами(желательно на русском)

ООП ради ООП
Доброго времени суток! Есть к примеру класс Cat который реализует интерфейс Movable, инкапсулирует...

ооп
Нада книгу по ооп, такую что бы было все разжевано максимально. Так, что бы я за минимум времени и...

ООП C#
Всем привет. Скоро экзамен по ООП. Помогите нормально составить ответы к этим вопросам. Заранее...

6
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
02.03.2020, 20:07 2
Лучший ответ Сообщение было отмечено Nyarin как решение

Решение

Цитата Сообщение от Nyarin Посмотреть сообщение
можете объяснить код?
в смысле указатель на объект класса UCameraComponent, или почему квалификация типа class?

Добавлено через 3 минуты
Цитата Сообщение от _stanislav Посмотреть сообщение
или почему квалификация типа class?
это делается что бы сказать, что UCameraComponent это класс, такое нужно когда нет объявления класса UCameraComponent, однако если снабдить имя class, компилятор поймет, что это указатель на объект класса, это работает потому что, для определения указателей не нужно определение класса (не нужно знать размер класса, так как объект класса не создается, а создается указатель, а размер указателя компилятор всегда знает)
1
1 / 1 / 0
Регистрация: 23.11.2019
Сообщений: 14
02.03.2020, 20:09  [ТС] 3
И то и другое. Почему тут используется указатель и зачем здесь class? По поводу указателя еще есть некоторые мысли, но зачем здесь используется class вообще мыслей нет, учитывая, что данный код пишется внутри другого класса.
0
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
02.03.2020, 20:13 4
Цитата Сообщение от Nyarin Посмотреть сообщение
И то и другое. Почему тут используется указатель и зачем здесь class?
все эти заморочки ходят вместе с понятием раздельной компиляции, советую освежить знания по теме.
1
zayats80888
02.03.2020, 20:14
  #5

Не по теме:

Цитата Сообщение от Nyarin Посмотреть сообщение
но зачем здесь используется class вообще мыслей нет, учитывая, что данный код пишется внутри другого класса.
сказали же - предварительное объявление...

0
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
02.03.2020, 21:30 6
Nyarin,
Цитата Сообщение от _stanislav Посмотреть сообщение
все эти заморочки ходят вместе с понятием раздельной компиляции, советую освежить знания по теме.
трудно на пальцах и кратко рассказать. Оно с компоновкой связано. Вот в одной единице трансляции - очень искусственно, и непонятно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
using namespace std;
 
class WhoKnowsWho ; //ни к чему не обязывает
 
class DoesNotKnowYet
{
    public:
    void methodDoesNotCareWho(WhoKnowsWho* whoKnowsWho);
};
WhoKnowsWho *func(int a) ;
int main()
{    
    WhoKnowsWho *whoKnowsWho=func(123) ;
    DoesNotKnowYet doesNotKnowYet ;
    doesNotKnowYet.methodDoesNotCareWho(whoKnowsWho) ;//123
    delete whoKnowsWho ;
return 0;
}
 
class WhoKnowsWho
{
    public:
    WhoKnowsWho(int a_):a(a_){}
    int a;
};
WhoKnowsWho *func(int a){WhoKnowsWho *toRetPtr = new WhoKnowsWho(a); return toRetPtr;}
//there method sees the who and take it as known who
void DoesNotKnowYet::methodDoesNotCareWho(WhoKnowsWho* whoKnowsWho)
{
    cout<<whoKnowsWho->a;
}
Без предварительного объявления нельзя сделать так чтобы main видела то что она вызывает, но не видела того, что вызывает то, что она вызывает. А то, что она вызывает видит то, чего она не видит и вызывает это.
Иной раз нужно связать крест накрест два класса. Тогда то же самое делается не "над" и "под" областью вызова, а аж в разных файлах.
1
198 / 155 / 44
Регистрация: 11.11.2019
Сообщений: 345
02.03.2020, 22:20 7
Nyarin, эта конструкция в UE4 используется очень часто. Это т.н. Elaborated type specifier. Почему разработчики UE4 настолько интенсивно используют данную конструкцию остается вопросом.
1
02.03.2020, 22:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2020, 22:20
Помогаю со студенческими работами здесь

ООП
ребята подскажите как правильно обьявлять глобальные переменные в методах $login = $_REQUEST;...

ООП
Объясните кто-нибудь, пожалуйста, что такое конструкторы/деструкторы и для чего они нужны. До меня...

ООП на С++
Помогите пожалуйста!! Не понимаю как это сделать(( Создать программу с классом Student...

ООП
ребята, подскажите пожалуйста как обьявлять класс в классе, мне нужно сделать что то типа такого:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru