Merhabalar daha nce c++ çalıştığımı sylemiştim. Class konusunda takıldığım bir soru var nedenini anlayamadım bir türlü çzümünüde bulamadım. ncelikle soruda anladığım kadarıyla yazdığım sınıfta her obje için bir numara atanmasını istiyor ve bu numaralar her objede farklı olacak enson 3 obje oluşturacağım ve çağıracağım ekrana benim numaram x diye yazacak. Buraya kadar sıkıntı yok ancak nedense yapamadım. Hatam nerede yada nasıl düzeltmeliyim ve neden yle olmalı açıklarsanız sevinirim. #include<iostream>using namespace std;class SerialNumber { private : int serial; static int sayac; public : SerialNumber void respond };int main Buda verdiği hata : http://puu.sh/e2IDF/f56d7eebcf. png

Altair bunu yazdı DrKill bunu yazdı Sorunu okuyamadım vallaha. Sanırım serial değişkenini sayac değişkenindeki değeri atayıp sayac değişkenini arttırmaya çalışıyorsun. oluşturulan nesnenin elenlarına this keyword ü ile ulaşabilirsin this->serial = sayac++; demen yeterli. Tabi okurkende cout << this->serial; demen lazım. Tabi sorun buysa. Akşam unutmazsam sorunu okuyup yle cevap veriirm. Sayacıda static int tanımla global değişken olarak static int sayac = 0; gibi.. Hocam şyle amacım soruda olanları kullanmak yani this keyword ünü falan bilmiyorum ki : Sorunu okudum. Benim dediğim gibi yapacaksın. This keyword'unu bilmemen sıkıntı değil, ğrenmemen sıkıntı :) Nesneye ynelik programlama ğrenmeye çalışıyorsunuz. this'i ğrenmeden olmaz. This keyword'u sınıftan oluşturulan nesnenin bellekteki adresini tutan bir pointerdır. Hani this->serial yazdım ya . serial ile arasında bir fark yok. . serial = ++sayac; demen yeterli. Yazdırırkende . serial ya da this->serial diye yazdıracaksın ekrana. : ) Anlamadım hocam neyse hafta içi işlerim olmasa uğraşacağımda hafta sonuna kaldı artık..

C++'da extern keyword'üne bir gz at bence. Şurda kısa birkaç bilgi var: http://stackoverflow.com/questions/10422034/when-to-use-extern-in-c Sen hiç kaval çaldın mı?

Sorunu okuyamadım vallaha. Sanırım serial değişkenini sayac değişkenindeki değeri atayıp sayac değişkenini arttırmaya çalışıyorsun. oluşturulan nesnenin elenlarına this keyword ü ile ulaşabilirsin this->serial = sayac++; demen yeterli. Tabi okurkende cout << this->serial; demen lazım. Tabi sorun buysa. Akşam unutmazsam sorunu okuyup yle cevap veriirm. Sayacıda static int tanımla global değişken olarak static int sayac = 0; gibi.. Hocam şyle amacım soruda olanları kullanmak yani this keyword ünü falan bilmiyorum ki :

Sorunu okuyamadım vallaha. Sanırım serial değişkenini sayac değişkenindeki değeri atayıp sayac değişkenini arttırmaya çalışıyorsun. oluşturulan nesnenin elenlarına this keyword ü ile ulaşabilirsin this->serial = sayac++; demen yeterli. Tabi okurkende cout << this->serial; demen lazım. Tabi sorun buysa. Akşam unutmazsam sorunu okuyup yle cevap veriirm. Sayacıda static int tanımla global değişken olarak static int sayac = 0; gibi.. DrKill tarafından 04/Oca/15 17:01 tarihinde düzenlenmiştir Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

DrKill bunu yazdı Sorunu okuyamadım vallaha. Sanırım serial değişkenini sayac değişkenindeki değeri atayıp sayac değişkenini arttırmaya çalışıyorsun. oluşturulan nesnenin elenlarına this keyword ü ile ulaşabilirsin this->serial = sayac++; demen yeterli. Tabi okurkende cout << this->serial; demen lazım. Tabi sorun buysa. Akşam unutmazsam sorunu okuyup yle cevap veriirm. Sayacıda static int tanımla global değişken olarak static int sayac = 0; gibi.. Hocam şyle amacım soruda olanları kullanmak yani this keyword ünü falan bilmiyorum ki : Sorunu okudum. Benim dediğim gibi yapacaksın. This keyword'unu bilmemen sıkıntı değil, ğrenmemen sıkıntı :) Nesneye ynelik programlama ğrenmeye çalışıyorsunuz. this'i ğrenmeden olmaz. This keyword'u sınıftan oluşturulan nesnenin bellekteki adresini tutan bir pointerdır. Hani this->serial yazdım ya . serial ile arasında bir fark yok. . serial = ++sayac; demen yeterli. Yazdırırkende . serial ya da this->serial diye yazdıracaksın ekrana. DrKill tarafından 04/Oca/15 18:51 tarihinde düzenlenmiştir Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

C++'da extern keyword'üne bir gz at bence. Şurda kısa birkaç bilgi var: http://stackoverflow.com/questions/10422034/when-to-use-extern-in-c Hocam anladığım kadarıyla class yapılarında private static değişkenlere ilk değeri vermek istiyor isek int SerialNumber :: sayac = 0 ; bu tarz bir initialize yapmamız gerekyor doğru mudur? http://stackoverflow.com/questions/3536372/defining-static-members-in-c Altair tarafından 04/Oca/15 14:41 tarihinde düzenlenmiştir

Hocam çok teşekkür ederim, senin çzümünü anladım sayac değişkenini global bir static yapıyorsun ama mantık olarak sııf yapısını kullandığımız için sayac değişkeni private olması gerekiyor diye düşünüyorum soruyu internette aradım birkaç birşey buldum. http://stackoverflow.com/questions/8932316/generate-automatic-serial-number-of-each-object-in-this-program-the-constructo burada soruyu cevaplayan arkadaş benim gibi düşünmüş ama sonuç yanlış hata veriyor derleyeci. birde http://stackoverflow.com/questions/20310000/error-iso-c-forbids-in-class-initialization-of-non-const-static-member buradada benzer bir cevap var ancak And add the following line to your employee. cpp: int Employee::counter = 0; Byle birşey kullanmış arkadaş bunu neden kullandığını anlayamadım yada byle bir kullanım ne işe yarıyor bilmiyorum buradan yola çıkarak kodu düzenleyip class parantezlerinin sonuna int SerialNumber :: sayac = 0 ; eklediğim zaman çalışıyor ancak bu satır ne işe yaradı yani bunu public kısımda yazmak istesem nasıl yazabilirim?

Edit: #include<iostream> #include<cstdlib> using namespace std; static int sayac = 0; class SerialNumber { private : int serial; public : SerialNumber void respond }; int main Sayac değişkenine ilk değer atamamışsın. Ve sınıf içerisinde tanımladığından her nesnenin sayac değişkeni kendisine ait oluyor, ilk değer atasanda hepsi eşit olur. wasd tarafından 04/Oca/15 06:26 tarihinde düzenlenmiştir :)