Forum: Diğer Konular RSS
enum class ve enum
hsencan #1
Üye 2 haftadır · 9 mesaj · Konum: Afyonkarahisar
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: enum class ve enum
Öncelikle herkese iyi akşamlar ben c++11' i incelerken enum class ve enum struct gördüm. Açıkçası pek de ne işe yaradıklarını ve farklarını anlamadım. Bunların arasındaki fark nedir ?  Ve nerelerde kullanırız ?
kerdemdemir #2
Üye Eyl 2013 tarihinden beri · 168 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Merhaba,

Benim için aralarındaki en büyük fark:
enum Meyva
{
     Elma,
     Armut
}

void MeyvaYazdır ( Meyva  m)
{
     std::cout  <<  m == Elma ? "Elma" : "Armut" ;


Dediğimizde bu enum'u kullananlar direk şöyle erişebiliyor:

MeyvaYazdır( Elma );

Ama enum class olarak tanımlasaydık

MeyvaYazdır ( Meyva::Elma );

demek sorunda kalıcaktır. Büyük çaplardaki projelerde enum isimleri(elma, armut gibi) projeyi kirletebiliyorlar. O yüzdende isimler genel meyva_enum_elma, meyva_enum_armut gibi şeçiliyor. Ben meyva_enum_elma gibi isimlendirmeleri uzun buluyorum.

Ve enum classların en sevdiğim yönü "forward declare" edilebilmeleri. Eğer "forward declare" konusunu duymadıysan lütfen bir konu daha aç olurmu? Öyle bir durumda ben açtığın konuya cevap yazar ve "forward declare" konusunda örnekler yazarım.

Bir önemli olayı daha var bu enum class 'lar direk int'e cast olmuyorlar. Bu konuda enum lar direk int 'e dönüşebiliyor ve farketmeden sorunlara yol açabiliyorlar. Bu bence diğerlerine göre biraz daha önemsiz olduğundanörnek yazmayacağım belki başkası örnek vermek ister.

Bu arada D dilindeki enumlara bir bakmanı öneririm.

C, C++ dilinde enumlardan sonra hep MeyvaToString ve StringToEnum fonksiyonları filan yazılır. İşte dosyadan okuduğumuzda string'i enum türüne çevirmek için filan. Fakat güzel D mizde bu fonksiyonlara gerek kalmadan

enum Meyva : string
{
     Elma  = "Elma",
     Armut = "Armut"
}

Gibi kısa bir dizilimle bu iş çözülebiliyor.


Sevgiler
Erdemdem
hsencan #3
Üye 2 haftadır · 9 mesaj · Konum: Afyonkarahisar
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Öncelikle ilginiz için teşekkür ederim. Çok güzel açıklamışsınız. forward declare'e de gelince daha önce duymadım.Şimdi konuyu açıyorum. Ayrıca D dilini bu form sayesinde gördüm. Biraz inceledim işte diğer dillerden farkı ne "+" ve "-" yönleri neler. Programlama bilgim üst düzey olmasa da anladığım kadarı ile Hoşuma da gitti açıkası. Ben oyun geliştiriciliği
üzerine lisans eğitimi alıyorum. Ve grafik motorlarının çoğu c++ ile çalışıyor. Bu yüzden c++' a odaklanmış bulunmaktayım. Ama D dilini öğrenmeyi de çok isterim. Sorum şu şekilde (Doğru yere yazmıyorsam affola) D programlama dilini öğrenirsem bana oyun geliştiriciliği kariyerimde ne kadar faydası olur ?
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4644 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
hsencan:
D programlama dilini öğrenirsem bana oyun geliştiriciliği kariyerimde ne kadar faydası olur ?
Öncelikle, D'yi de bilmek salt bilgi açısından bile olsa yararlı olur.

Bildiğim kadarıyla oyun firmalarının ana dili C++. Ancak, Remedy Games programcılarını DConf sunumalrından anladığımız kadarıyla, C++ seçimle değil, mecburiyetten kullanılıyormuş.

Remedy Games bir kaç sene önce Manu Evans, ve daha sonra Ethan Watson öncülüğünde kodlarının bir bölümünü D'ye geçirdiler. Hatta, Quantum Break oyununun bir kısmı D ile yazılmış kodlardan oluşuyor.

Oyun programcılığına yakın olmadığımdan şu sayfadan başka kaynak gösteremem:

  https://wiki.dlang.org/Game_Development_and_Multimedia_Lib…

D harika bir dil ama hazırda çözüm bulma konularında başka dillerden geride. Bu konudaki bir özelliği, C kütüphaneleriyle doğrudan bağlanabiliyor ve D'nin C++ kütüphaneleriyle kullanımı da gittikçe gelişiyor. O yüzden, D ile yazılmış çözüm yoksa örneğin C kütüphanesi bulunup doğrudan çağrılabiliyor.

Yanıltmış olmamak için: D, C başlık dosyalarından anlamadığından C kütüphanesinin başlıklarındaki bilgilerden gerekenlerin D'ye geçirilmeleri gerekiyor (D ilintisi (binding)). Çoğunlukla çok basit bir işlem olsa da karmaşık C makroları güçlük çıkarabiliyor. Sık kullanılan C kütüphanelerinin ilintileri şu projede var:

    https://github.com/D-Programming-Deimos

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2018-02-24, 09:57:17 (UTC -08:00)