Ben sınıflara vardır:Farklı türde argümanlar alan bir işlev nasıl yazılır?
template <class T>
class shared_vector
{
T data;
}
template <class T>
class device_vector
{
T data;
}
Ben, herhangi bir nesne accects bir f fonksiyonu yazma tip shared_vector
veya device_vector
ait olsun istiyorum ve buna göre bazı bayrak ayarlar.
Artık bariz çözüm, aşırı yükleme işlevine gitmektir. Ancak, f fonksiyonunun shared_vector
veya device_vector
, olabilen 10 argümanı aldığını varsayalım, 1024 aşırı yüklenmiş fonksiyon yazmam gerekecek.
Başka bir çözümhybrid_vector
olan device_vector
ve shared_vector
miras hem bir ana sınıfı kullanmaktır.
Ancak maalesef, device_vector kodu benim denetimimde değil.
Bu sorunu nasıl çözmeliyim?
Not: Tipik (değişken) .name() türünü anlatabildiğimi biliyorum, ancak işlev bildirimi ne olacak ve bundan nasıl bir sonuç çıkarabilirim?
Bu birleştirici patlamayı çözmek için oluşturucu desenini isteyebilirsiniz gibi geliyor. –
Bu çeşitli türler ortak olan nedir? –
Veya aslında, süper tip işaretçilerden oluşan bir dizi. Söz konusu türleri kontrol etmediğiniz için kendi sarmalayıcı türlerinizi oluşturabilirsiniz. –