3 EYLÜL 2008, ÇARŞAMBA
Nasıl C uygulamasına yansıması ekleyebilir miyim?
C sınıfı adını, içeriğini (üyeleri ve türleri gibi) vb bir inceleyin edebilmek istiyorum. Burada yerel C, yansıması olan C , yönetilen değil diyorum. C kaynakları sınırlı bir bilgi RTTI kullanarak farkındayım. Ek kütüphaneler (veya diğer teknikler) bu bilgi kaynağı olabilir ki?
CEVAP
24 Kasım 2008, PAZARTESİ
reflection
yüzme iki tür vardır.
- Bir türün üyeleri, kendi yöntemleri sıralanıyor ve benzeri üzerinden yineleme tarafından muayene.< / ^ br .
Bu C ile mümkün değildir . - Sınıf-a tipi (sınıf, yapı, birlik) bir yöntem veya iç içe türü olup olmadığını kontrol ederek teftiş, başka bir tür türetilmiştir.< / ^ br .
Bu tür şeyler Ctemplate-tricks
kullanma ile mümkündür. Pek çok şey içinboost::type_traits
(Bir tür ayrılmaz olup olmadığını kontrol gibi) kullanın. Bir üyenin varlığı için kontrol fonksiyonu, http://stackoverflow.com/questions/257288/possible-for-c-template-to-check-for-a-functions-existence#264088 kullanın . Bazı iç içe bir türü var olup olmadığını kontrol etmek için, düz SFINAE kullanın .
Eğer seni çok arıyorum yollarla gerçekleştirmek 1), gibi bakıyor kaç yöntemleri dersi var, ya gibi dize temsili bir sınıf kimliği, o zaman korkarım yok Standart C yol yapıyor. Kullanmak da var
- Qt Meta Meta gibi bir Derleyici kodunuzu çeviren Derleyici ek meta bilgileri ekleme Nesne.
- Bir Çerçeve eklemek için izin veren bir makro constisting meta-bilgiler gerekli. Çerçevesinde tüm yöntemler, sınıf adları, temel sınıfları ve ihtiyacı olan her şeyi söylemek gerekir.
C hız düşünülerek yapılır. Eğer üst düzey denetim istiyorsanız C# ya da Java var, o zaman biraz çaba olmadan yol var sana söylemek zorundayım.
Bunu Paylaş:
Nasıl Git deposu için boş bir dizin ek...
Nasıl bir JavaScript nesnesi için bir ...
Nasıl JavaScript bir dizi başında yeni...
Nasıl bir elementin bir tarafta kutu-g...
Nasıl "yorum-out" bir toplu ...