M
Size: a a a
M
РS
C
AS
C
AS
S
array[index]
, где array - указатель на первый элемент(в случае динамического массива). это в свою очередь эквивалентно записи *(array + i)
, что по сути просто сдвиг указателя и разыменовываниеSH
S
RM
template <typename Type, typename... Args>А так же класс делегаты, который может привязывать к себе функции
using fn_create_t = decltype(std::declval<Type>().OnCreate(std::declval<Args>()...));
entt::delegate<int(int)> delegate{};Могу ли я тот fn_create_t using заюзать в тайпнейм connect у делегаты? Как это можно замутить
delegate.connect<&my_struct::f>(instance);
NM
bool Battle::exchangeHits(){
if(w1StrikesFirst) {
warrior1.removeHP(10);
warrior2.removeHP(15);
warrior1.printInfo();
warrior2.printInfo();
} else {
warrior2.removeHP(15);
warrior1.removeHP(10);
warrior2.printInfo();
warrior1.printInfo();
}
if ( warrior1.getHP() > 0 && warrior2.getHP() > 0) {
exchangeHits();
return true;
} else {
return false;
}
}
void Battle::start() {
std::cout << "Starting" << std::endl;
exchangeHits();
}
C
O
template <typename Type, typename... Args>А так же класс делегаты, который может привязывать к себе функции
using fn_create_t = decltype(std::declval<Type>().OnCreate(std::declval<Args>()...));
entt::delegate<int(int)> delegate{};Могу ли я тот fn_create_t using заюзать в тайпнейм connect у делегаты? Как это можно замутить
delegate.connect<&my_struct::f>(instance);
using
алиасится на возвращаемый тип метода, так что не можешь. Напиши трейт-класс, который fn_*_t
хранит, и указатель на метод, только... зачем?RM
using
алиасится на возвращаемый тип метода, так что не можешь. Напиши трейт-класс, который fn_*_t
хранит, и указатель на метод, только... зачем?RegisterSystem<Type>
проверять, есть ли в Type методы OnInit
, OnUpdate
, OnDestroy
, если есть, то поместить их указатели в entt::delegate<bool ()>
RegisterSystem<Type>
используется:if constexpr (Internal::is_detected_v<fn_create_t, Type>) {
system.m_DelegateCreate.template connect<&Type::OnCreate>(system.m_Instance);
}
...
RM
RM
O
DP
DP
RM