RN
Size: a a a
RN
RN
AW
RN
AW
RN
RN
AW
class Object {
public:
virtual ~Object() = default;
};
class Derived1 : public Object {
public:
void f(void *a, void *b, void *c) {
std::cout << "Hello World 1!" << std::endl;
}
};
class Derived2 : public Object {
public:
void f(void *a, void *b, void *c) {
std::cout << "Hello World 2!" << std::endl;
}
};
class FDelegateSignature {
TYPE *m_object = nullptr;
void (TYPE::*m_delegate)(void *, void *, void *) = nullptr;
public:
void Bind(TYPE *object, void (TYPE::*delegate)(void *, void *, void *)) {
m_object = object;
m_delegate = delegate;
}
void UnBind() {
m_object = nullptr;
m_delegate = nullptr;
}
void Execute(void *a, void *b, void *c) {
return std::invoke(m_delegate, m_object, a, b, c);
}
};
ну допустим есть вот такой огрызок кода. очевидно, что тут надо что-то думать с типом класса, который прописан в делегате.DerivedN
, то второй не сможет подписаться на этот ивент, даже при том, что у него такая же сигнатура.AW
AW
RN
AB
RN
AW
AW
RN
AW
s
0[arr] == arr[0] // 1
G
arr[i] == i[arr] == *(arr + i)
J