Thread overview
enum class ve enum
Feb 10, 2018
hsencan
Feb 10, 2018
kerdemdemir
Feb 10, 2018
hsencan
February 10, 2018

Ö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 ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2018

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2018

Ö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 ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2018

Alıntı (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_Libraries

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]