Projelerimde veri işleme sınıfları için bir şablon arabirimi oluşturmak istiyorum.Yöntemin bir parametresine şablon parametresi olarak imzalanması
böyle bir şey yazabilirsiniz: Bir şekilde benim şablon arayüzü tanımlayabilirsiniz, soru gel, Şimdi
class MyClass: public DataHandler<int>
{
void Process(const int&) { /* Bla-bla */ }
}
:
template <class T>
class DataHandler
{
public:
void Process(const& T) = 0;
};
Sonra
, herhalde, bir sınıf bu şekilde tanımlamak Parametre olarak, sadece T'yi değil, Process() işlevinin tüm imzasını da alır. Mümkün
class MyClass: public DataHandler<void (int&)>
{
void Process(const int&) { /* Bla-bla */ }
}
mi:
bu şekilde çalışma şey istiyorum? Örneğin, boost :: signal'in şablon parametrelerini bu şekilde aldığını biliyorum, fakat eğer doğru bir şekilde anlarsam orada çok fazla kara büyü kullanırlar.
Şimdi soru şu: İşyerinde günlük kullanıma değişken şablonlar koyabilene kadar kaç yıl geçecek? Ne kadar basit olabileceğini bilmek ... –
DataProducer arayüzünde Process() işlevinde birden fazla parametreyi desteklemek için bunu nasıl değiştirmeliyim? Yani, DataHandler –
Lev
@ Lev gibi bir şeyi desteklemeyi tercih ediyorum, "İşlem" işlev bildirimini almanız için fonksiyon türünde "DataHandler" işlevini kısmen uzmanlaştırmanız gerektiğinden şüpheleniyorum doğru da. 'boost :: function' gerekli kodu üretmek için önişlemciyi kullanır, ancak kendi projeleri ve birkaç kullanım için, bu konuya kendinizi tanıtmanız (benim fikrime göre) artık daha fazla ihtiyaç duymadığınız için pek de yararlı değildir. Bu yüzden sadece 4 kez kopyala/yapıştır ve bitirin :) –