17 Mayıs 2009, Pazar
C sadece belirli türde kabul şablonları
Java seçim sizin, örneğin sınıf aşan tek tip kabul eden genel sınıf tanımlayabilirsiniz:
public class ObservableList<T extends List> {
...
}
Bu yapılır kullanarak "" anahtar kelime.
C bu anahtar kelime için bazı basit eşdeğer var mı ?
CEVAP
17 Mayıs 2009, Pazar
Kullanarak Artırmak static assert Destek Türü Özellikleri kütüphaneden is_base_of
konser özellik öneriyorum
template<typename T>
class ObservableList {
BOOST_STATIC_ASSERT((is_base_of<List, T>::value)); //Yes, the double parentheses are needed, otherwise the comma will be seen as macro argument separator
...
};
Başka, daha basit durumda, sadece ileriye dönük beyan küresel bir şablon, ama sadece (açıkça veya kısmen uzmanım) geçerli türlerini tanımlayabilirsiniz:
template<typename T> my_template; // Declare, but don't define
// int is a valid type
template<> my_template<int> {
...
};
// All pointer types are valid
template<typename T> my_template<T*> {
...
};
// All other types are invalid, and will cause linker error messages.
[Küçük değişiklik 6/12/2013: ilan etti-ama-değil-tanımlanmış bir şablonu Kullanarak neden olurlinkerderleyici , hata mesajları.]
Bunu Paylaş:
Elasticsearch sadece belirli alanların...
Nasıl sadece Rspec belirli testler?...
Grep, ama sadece belirli dosya uzantıl...
Nasıl sadece sayı kabul eden bir textb...
Paket Yöneticisi Konsolunu Etkinleştir...