bu kodu göz önünde bulundurun: biz derleyici Görüldüğü gibiçoklu kalıtım ve variadic şablonları
#include <string>
#include <iostream>
class Foo
{
protected:
void foo(){ std::cout << "foo" << std::endl; }
};
class Bar
{
protected:
void bar(){ std::cout << "bar" << std::endl; }
};
template<typename... Args>
class Test: public Args...
{
public:
void test()
{
this->foo();
this->bar();
}
};
int main(int argc, char** argv)
{
Test<Foo, Bar> test;
test.test();
return 0;
}
bize parametre paketten devralmak için izin verir. Ama bu özelliğe ihtiyacımız olduğunda? Nasıl düzgün kullanılır?
Ben Nawaz sağlamıştır gibi bazı kullanım durumlarını görmek istiyorum
Güncelleme. gördüğüm tek kullanım durumunda - politika tabanlı tasarım, ama biz gibi gerekli politika listesi itaat edersen daha iyi olmaz:
template<typename T, typename Policy1, typename Policy2, typename Policy3>
class SomeClass: public Policy1, public Policy2, public Policy3 { ... };
Ama kendiniz cevap verdiniz: 'Test testi;' –
SingerOfTheFall
İşte bu özelliği kullanan [küçük bir örnek] (https://github.com/snawaz/cson) var .. ve [bu dosya] Bakabileceğiniz (https://github.com/snawaz/cson/blob/master/include/cson/cson.h%2B%2B). Ve işte bu özelliği yoğun olarak kullanan [daha büyük, daha karmaşık bir örnek] (https://github.com/snawaz/tagsql). – Nawaz