Программирование > Общие вопросы C++

Классы или принцип ООП

<< < (2/2)

xanser:

--- Цитата: Sektor от Май 17, 2015, 10:36:24 pm ---
--- Цитировать ---структуру и класс
--- Конец цитаты ---
Одинаковые вещи, принцип тот же.

--- Конец цитаты ---

Только в классе помимо параметров объекта можно ему еще задать методы. Условно говоря, если описать функцию "Взорвать", то ее можно было бы применить ко всему, но если она прописана как метод для транспорта, то взорвать можно будет только транспорт, просто для порядка в коде и правильной логики.

Вот еще пример, хочешь ты создать объект в игре, без класса тебе надо создать функции CreatePed, WeaponCreate, Create_Car, и еще 100 таких же разношерстных функций, но если есть классы, можно прописать в каждом свой метод Create и все станет аккуратно и красиво.

graveman:
Классы - это данные + функции. Можно задавать уровень доступа к ним. Также можно расширять класс (наследование), добавляя новые данные и методы. Почитай Стефана Девиса C++ для чайника - хорошее введение.

Prographer:

--- Цитата: graveman от Июнь 24, 2015, 12:39:17 pm ---Классы - это данные + функции. Можно задавать уровень доступа к ним. Также можно расширять класс (наследование), добавляя новые данные и методы. Почитай Стефана Девиса C++ для чайника - хорошее введение.

--- Конец цитаты ---
Я прекрасно знаю, что такое классы. Мне интересно, как они могут применяться на практике

graveman:

--- Цитата: Prographer от Июнь 24, 2015, 05:27:58 pm ---Я прекрасно знаю, что такое классы. Мне интересно, как они могут применяться на практике

--- Конец цитаты ---
Тогда надо смотреть в сторону паттернов, наверное

kenking:
Напишу пожалуй здесь. Вопрос касается структуры (класса) CompressedVector. Во всех базах:

--- Код: C++ ---struct CompressedVector{  __int16 x;  __int16 y;  __int16 z;};
И только (теперь и в моей базе для 1.0 так) в базе для GTA3 1.1, которую скинули на форуме SB: https://sannybuilder.com/forums/viewtopic.php?pid=27306#p27306


--- Код: C++ ---struct CompressedVector{  CVector m_vecPoint;};
Разбирал функции для GTA3, где используется CompressedVector и получается правильный вариант второй.

Например часть псевдокода функции CCollision::ProcessVerticalLineTriangle при первом варианте:

--- Код: C++ ---v7 = &verts[2 * tri->m_nVertA];v33 = *(float *)&v7->x;v34 = *(float *)&v7->z;v35 = *(float *)&v7[1].y;v8 = &verts[2 * tri->m_nVertB];v36 = *(float *)&v8->x;v37 = *(float *)&v8->z;v38 = *(float *)&v8[1].y;v9 = &verts[2 * tri->m_nVertC];v39 = *(float *)&v9->x;v40 = *(float *)&v9->z;v41 = *(float *)&v9[1].y;v10 = *(float *)&colLine->m_vStart.x;
Явно что-то не то...
 
И эта же часть этой же функции при втором варианте:

--- Код: C++ ---v7 = &verts[tri->m_nVertA];v32 = v7->m_vecPoint.x;v33 = v7->m_vecPoint.y;v34 = v7->m_vecPoint.z;v8 = &verts[tri->m_nVertB];v35 = v8->m_vecPoint.x;v36 = v8->m_vecPoint.y;v37 = v8->m_vecPoint.z;v9 = &verts[tri->m_nVertC];v38 = v9->m_vecPoint.x;v39 = v9->m_vecPoint.y;v40 = v9->m_vecPoint.z;v10 = colLine->m_vStart.x;
И в других функциях, где используется CompressedVector, такая же ситуация.

Кто-нибудь ещё разбирал этот вопрос? Что скажите?

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Перейти к полной версии