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

  • eyes4beautee

    eyes4beautee

    17 HAZİRAN 2011
  • Mega64

    Mega64

    24 ŞUBAT 2006
  • the one am radio

    the one am r

    6 Mayıs 2006