4 Aralık 2016 Pazar

Variadic Inheritance

Elimizde çoklu kalıtım olsun. He bir ata sınıfın bir metodunu çağırmak isteyelim. Şöyle yaparız.
template<typename... Policies>
struct ComposedType : Object, Policies...
{
  virtual void loadData() override {
    int arr[] = {
      ((void)Policies::loadData(), 0)...
    };
    (void)arr;
  }
};

using FlyingCar = ComposedType<Drivable, Flyable>;
C++17 ile şöyle yaparız.
virtual void loadData() override {
  ((void)Policies::loadData(), ...);
}
Sınıfı tanımlamak için şöyle yaparız.
using FlyingCar = ComposedType<Drivable, Flyable>;

Hiç yorum yok:

Yorum Gönder