Drenated
Legend Member
- Joined
- Nov 23, 2019
- Topics
- 454
- Messages
- 1,853
- Solutions
- 162
- Reaction score
- 1,523
Bundan bir şey çıkarabilmek için ortalama C++ bilginizin olması lazım!!! En azından biraz template, typename & castlar(reinterpret).
İleri düzey programcılar için veri tiplerini tek tek işlemek (fun->setInt, setString vb...) bi hayli zordur ve görünüş bakımından kötü gözükürler. Aslında bunun kolay bir yolu var. Direkt adımları anlatıcam. Not: Bu kod sadece VS16 ve intellisense'nin Ocak 1, 2020 versiyonu ile test edildi. Kod biraz değişik olduğundan olur olmadık yerde intellisense hata doğurabilir. Neyse, ilk olarak intellisense'nin kudurmaması için bazı şeyleri tanımlayalım:
İleri düzey programcılar için veri tiplerini tek tek işlemek (fun->setInt, setString vb...) bi hayli zordur ve görünüş bakımından kötü gözükürler. Aslında bunun kolay bir yolu var. Direkt adımları anlatıcam. Not: Bu kod sadece VS16 ve intellisense'nin Ocak 1, 2020 versiyonu ile test edildi. Kod biraz değişik olduğundan olur olmadık yerde intellisense hata doğurabilir. Neyse, ilk olarak intellisense'nin kudurmaması için bazı şeyleri tanımlayalım:
Code:
//Bu alanı istediğiniz yere yapıştırın yeter ki hata vermesin :)
typedef unsigned __int32 uint32; //uint32 bit, çok işe yarar
typedef const char* cStr; //direkt string, "Selam, nasılsın?" gibi. "Selam, " + std::to_string(14) + " nasılsın?" İÇİN DEĞİL!!!
typedef std::basic_string<char, struct std::char_traits<char>, class std::allocator<char> > eStr;
//İşte bu "Selam, " + std::to_string(14) + " nasılsın?" için. Açıklamama gerek yok bunu bilenler bilir :)
Şimdi sınıflara girelim:
Code:
class SuperVeriAlgilayici3000 { //Bu sınıf çok gereksiz biliyorum ama kim bilir ileride iş görür?
private:
template<typename T>
vo id veriyiTanimla(T t) {
if (typeid(t) == typeid(__int32))
{
int sonuc = reinterpret_cast<__int32>(t); //reinterpret kullanmak zorundayım :( intellisense sağ olsun
printf("INT32 Degerindeki sonuc: %d\n", sonuc);
}
//else-if kullanarak digerlerini de ekleyebirirsiniz
else {
printf("Bu nasil bir veri tipidir arkadas? Tanimlamayi mi unuttun?\n");
}
}
public:
template <typename... siradaki>
**** algila(siradaki... degerler) {
int cokGerekliBirsey[] = { 0, ((vo id)veriyiTanimla(forward<siradaki>(degerler)), 0) ... }; //evet, isimden de belli olduğu üzere...
}
}