SORU
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.

  1. 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 .
  2. 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 C template-tricks kullanma ile mümkündür. Pek çok şey için boost::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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Mindy

    Mindy

    20 NİSAN 2006
  • Pál Zoltán Illés

    Pál Zoltán

    30 NİSAN 2007
  • RinconDynamic

    RinconDynami

    1 EKİM 2011