Tür parametresini bilmeden bir shared_ptr tutabilir miyim? [çiftleme]
Aug 17 2020
Ben tutmak istiyorum shared_ptr
bir şablon sınıfı. Ancak, B sınıfını da şablon sınıf yapmak istemiyorum. Anladığım kadarıyla, herhangi bir türdeki shared_ptr aynı bellek düzenine sahip olacaktır. Yani bu senaryoda herhangi bir geçici çözümü merak ediyorum?
template<T>
class A {
...
};
class B {
...
std::shared_ptr<A<T>> ptr;
}
Yanıtlar
2 AtnNn Aug 17 2020 at 17:19
Tip hiç önemli olmadığında void
kullanılabilir.
template <typename>
class C {};
std::shared_ptr<void> p = std::make_shared<C<int>>();
Monomorfik bir temel sınıf eklemek, saklanabilecek türlerin kısıtlanmasına izin verir.
class AnyC {};
template <typename>
class C : public AnyC {};
std::shared_ptr<AnyC> p = std::make_shared<C<int>>();
Bu temel sınıfın sanal yöntemleri varsa, bunlar işaretçi aracılığıyla çağrılabilir.
class AnyC {
virtual void f();
};
template <typename>
class C : public AnyC {
void f() override;
};
std::shared_ptr<AnyC> p = std::make_shared<C<int>>();
p->f();
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'