Konuyu görüntüle
IUCODERS FORUM > Programlama > C / C++ > tip bulan fonk
Yazar
reputation


avatar

Kayıt: 03.10.2007
21.10.2007-13:48 #29173
arkadaslar ben C de bir kod yazmak istiyorum fakat kodun basında tip kontrolu yapmam gerekiyor , C# da olan GetType() fonksiyonuna benzer bir fonksiyon C'de var mıdır?confused bilgilendirirseniz sevinirim.





~~ms~~

Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
21.10.2007-14:55 #29176
Standard C 'de bildiğim kadarıyla böyle bir fonksiyon mevcut değil. Zaten standard C veri tiplerini tanıyabilmek pek kolay değil, çünkü veri saklanması çok sadedir. Elde edebileceğiniz şeyler değişkenin başlangıç adresi, uzunluğu ve içerdiği veridir. Değişken dinamik bir dizi ise o zaman uzunluğu da bilinmez. C# gibi üst seviyeli dillerde verilerin iç yapısı daha komplex olduğu için kendi tiplerini tanıtacak bir takım bilgiler içerebiliyorlar.

Kodu C++ 'da yazıyorsanız çalışma anında tip belirlemek için typeid nesnesini kullanabilirsiniz.





Let`s make this world a better place to live !

Yazar
caglarmenguc


avatar
istanbul
Kayıt: 29.01.2006
21.10.2007-20:24 #29201
clairvoyant ın da dediği gibi typeid operatorunu kullanabilirsiniz. size type_info türünden bir nesne dönecektir. Bu nesne içindeki karşılaştırma operatörlerini (==, !=) kullanabilir veya name metodu ile nesnenin tür ismini alabilirsiniz.

Buna alternatif olarak aklıma başka bir yöntem geldi. öncelikle sizin işinize yarar mı bilmiyorum ancak belki bu bahaneyle c++ a ufaktan bir başlangıç yaparsınız.

Kendi sınıfınıza otomatik tür dönüşümü operatörü de yazabilrsiniz. örnek olarak;

class myClass
{
char *str;

public:
myClass(const char* _str) {
int len = strlen(_str);
str = new char[len + 1];
memset(str, 0, len + 1);
memcpy(str, _str, len);
}
int ToInt() { return atoi(str); }
operator char* () { return str; }
operator int () { return ToInt(); }
};

int main()
{
myClass mc = "12345";
char* str = mc; // burda operator char* () çalışacaktır.
int val = mc; // burda da operator int ()

return 0;
};





Life is a game of cards...
A good player, even with a bad hand of cards, will play well and emerge a winner...


Yazar
caglarmenguc


avatar
istanbul
Kayıt: 29.01.2006
21.10.2007-20:30 #29202
geri tuşuyla yapmış olduğum bir hatadan dolayı konuyu cevabı 2. kez post etmiş bulundum, bu gereksiz mesaj için özür dilerim...





Life is a game of cards...
A good player, even with a bad hand of cards, will play well and emerge a winner...


Yazar
kellad


avatar
istanbul
Kayıt: 21.01.2006
21.10.2007-20:50 #29203
Ben bu tip belirleme olayına hala alışamadım. C#'ta bile. Arada bir lazım oluyor. Hep uğraşıp duruyorum.silly





Decompiling the code of universe.
Listening the cosmic background radiation.
Swimming in Inter Stellar Medium.
Yazar
adaniak


avatar

Kayıt: 13.01.2007
07.11.2007-02:52 #29932
C# alışması en kolay olan şey belki de sürükle bırak olayıdır aksini düşünen???peacepeace?





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb