Bağımsız değişken olarak boşluk işaretçisine sahip bir yöntem var. Yöntemin gövdesinde, sadece boşluk işaretçisinin belirli bir işaretçiye dönüştürülebiliyorsa çalıştırması gereken bir kod yazmak istiyorum (benim durumumda bu bir karttır *). Kartın kart işaretçisine dönüştürülebilir olup olmadığını nasıl kontrol edebilirim?Void işaretçisinin başka bir işaretçi türüne dönüştürülüp dönüştürülmeyeceğini nasıl kontrol edebilirim?
cevap
Bunu yapmak için C++ dili özelliği yoktur.
[Bunu yapma] Bir olası yaklaşım, void*
noktasını, tür bilgilerini ve başka bir void*
depolayan belirli bir bilinen türde bir sınıf yapmaktır. Ardından, ilk void*
türünü içeren veri türüne dönüştürebilir, türün istediğiniz gibi olup olmadığını belirleyebilir ve ardından iç içe geçmiş void*
'u alabilir ve istediğiniz türe döndürebilirsiniz.
Bütün bunlar, çözmeye çalıştığınız gerçek sorun nedir? Muhtemelen 'a numaralı C++ - deyimsel bir yaklaşım vardır.
Kendi tür bilginiz dahil, bunu yapmanın tek yolu olabilir. Eğer void * 'e ihtiyacınız varsa, her zaman size doğru veri tipi verildiğini varsaymak zorundasınız. http://stackoverflow.com/questions/4131091/dynamic-cast-from-void –
void * 'den kaçınmak en iyisi olsa da, bazen bir kanca sağlamak için kullanmanız gerekir. Örneğin, çok iş parçacıklı kod yazdığımda, 'pthread_create', void * (* func) (void *)' türünde bir işlev göstergesini bekler, çünkü hangi türlerin kullanmak isteyebileceğini bilemez. (Evet, pthreads kullanıyorum, kullanmam gereken derleyici C++ 11'i desteklemiyor.) –
@KyleA: Çünkü pthreads' C, C++ 98 bile değil. C++ 98'de 'class Runnable {sanal geçersiz run() = 0; sanal ~ Runnable();} '. – MSalters
- 1. const void * ktiplerde işaretçi
- 2. 'void' türünden 'bool' türüne dönüştürülemez.
- 3. İşaretçi, sınıf nesnelerinin bir işaretçisinin içine nasıl sürüklenir ve bunları yinelemeli olarak atayıp işaretçi döndürür? C++
- 4. void * vs. char * işaretçi aritmetiği
- 5. Genel parametre türüne işaretçi nasıl kullanılır?
- 6. Bir oyun nesnesinin başka birini görüp göremeyeceğini nasıl kontrol edebilirim?
- 7. XSLT'de bir dosya varlığını nasıl kontrol edebilirim?
- 8. Bağlantılı liste ve tamamlanmamış sınıf türüne işaretçi
- 9. nasıl kontrol edebilirim?
- 10. nasıl kontrol edebilirim?
- 11. C hatası: tamamlayıcı türüne işaretçi işaretçisi, struct
- 12. svn bağlantımı nasıl kontrol edebilirim?
- 13. Başka bir yöntemden yöntem için bir işaretçi nasıl çağrılır?
- 14. Nullptr'i diğer işaretçi türüne atayabilir miyim?
- 15. Farklı sayıcılarda bir değişkeni nasıl kontrol edebilirim
- 16. CVS'den tek bir dosyayı nasıl kontrol edebilirim?
- 17. Bir dosya olup olmadığını nasıl kontrol edebilirim?
- 18. bir NaN hatasının değerini nasıl kontrol edebilirim
- 19. Bir başka işleve çift işaretçi geçirme
- 20. Tablo sütunu başka bir veri türüne dönüştürme
- 21. Bir cümle içinde std :: vector öğesinin varlığını nasıl kontrol edebilirim?
- 22. Mobil ekranı tarayıcıdan nasıl kontrol edebilirim?
- 23. bir işaretçi boş olup olmadığını kontrol Boost.Test
- 24. Bir C işlevi işaretçisinin işlev adı nasıl elde edilir
- 25. 80'in kontrol stili yorum satırı genişliğini nasıl kontrol edebilirim?
- 26. Sesin çevrimdışı olup olmadığını nasıl kontrol edebilirim?
- 27. Rspec: Başka bir sınıfa ait bir yöntem çağrısının çağrılıp çağrılmadığını nasıl kontrol edebilirim?
- 28. Django: Bir öğenin başka bir öğenin ManyToMany alanında olup olmadığını nasıl kontrol edebilirim? Başlığa göre
- 29. Belirli bir yolun başka bir yolun çocuğu olup olmadığını nasıl kontrol edebilirim?
- 30. UIWebView'da dokunuşları nasıl kontrol edebilirim? (iphone)
Şunu mu demek istediniz: İşaretçi * aslında bir * kart 'nesnesinin işaret edip etmediğini öğrenmek ister misiniz? Çoğu durumda bir işaretçiyi dönüştürebilir, ancak dönüştürmeyi dönüştürmeden sonra kullanamazsınız. –