C++ içindeki typeid
işleci, metin adını verebilen std::type_info
sınıfının bir nesnesini döndürür. Bununla birlikte, sadece herhangi bir polimorfik sınıf için benzersiz bir sayısal tanımlayıcı almakla ilgileniyorum. (Tek bir programı çalıştırmak kapsamında benzersiz - ille koşular arasında) UygulamadaTypeid aracılığıyla bir sınıfın sayısal benzersiz tanıtıcısı
, sadece ve pointer KQUEUE vptr
'ın içeriğini okuyabilir - ama bu zarif ne de taşınabilir ne olurdu. Ben portatif bir yol tercih ederim.
typeid
işlecini bir şekilde bir sınıf için "güvenli" sayısal tanımlayıcısına sahip olmak için kullanabilir miyim? Örneğin, verilen bir sınıftaki her bir typeid
çağrısı için aynı olmak üzere std::type_info
yapısının adresine güvenebilir miyim? Ya da belki de name()
işaretçisinin kendisi? Bir sayaç kullanan bir algoritma ile başlatılan statik veri üyesi
. Bu bir dizgi değişmezi olduğundan, derleme zamanında da çözülmelidir. En azından bu “Gem” den bu fikri nereden aldığımı söylüyor ... benim deneyimim farklı. Benim için, bu çözümün yükü kabul edilemez derecede yüksektir. Ama, kesinlikle taşınabilir, bu yüzden ... evet. – Damon
Burada gerçekten ne gibi bir problem çözmeye çalışıyorsunuz? –
Nesnenin adresini “void **” ye dönüştürmeye ve vptr için dizelemeye direnmeye çalışmamın sorunu. : D Ve daha ciddi - 2 boyutlu bir vtable ile benzer bir şey. – Kos