Çözüldü C++ Hata -3

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Primearc

Hectopat
Katılım
3 Ocak 2021
Mesajlar
1.489
Makaleler
3
Çözümler
13
Yer
Matrix
Öncelikle @TerabyteForever 'ın önceki sorumda bana attığı mesaja tamamen katılıyorum. Kendim uğraşmam lazım. Ama emin olun ki her soruyu zaten buraya atmıyorum. Önce uğraşıyorum ve hatanın sebebini anlamaya çalışıyorum. Daha sonra hata kodunu internetten arıyorum. Her neyse..

[CODE lang="cpp" title="C++"]#include <iostream>

using namespace std;

class Gamer
{
public:
static int gamers;
Gamer() {
gamers ++;
cout << "Yeni oyuncu oluşturuldu" << endl;
}
};

int main()
{
int Gamer::gamers = 0;


Gamer gamer1();
Gamer gamer2();
Gamer gamer3();
Gamer gamer4();
Gamer gamer5();

cout << "Oyuncu sayısı: " << Gamer::gamers << endl;


return 0;
}[/CODE]
 
Çözüm
Peki sadece tek metodla yapmak mümkün değil mi?

C++:
int main()
{
    Gamer gamer1;
    Gamer gamer2;
    Gamer gamer3
    cout << gamers << endl;
    return 0;
}

Daha rahat gör diye uzun uzun yazmıştım. Tabii ki mümkün. Zaten nesne yaratılınca constructor'da gamer sayısını artırıyorsun. Tek metoda da gerek yok ki, static olarak tutuyorsun değişkeni onu yazdırabilirsin direkt.
 
Header dosyasında prototipler veriliyor, tanımlamalar cpp'de yapılıyor.
Değişkeni header dosyasında tanımlıyoruz, ilklendirmeyi ise cpp'de yapıyoruz.
Ben hocamdan böyle görmüştüm. Konudaki ilk mesajımda tek dosyada yapmayı anlatmaya çalıştım ama ben de karıştırmışım.

Normalde static değişkene değer ataması ilk nesne oluşturulduğunda yapılır. Yani constructor içinde gamers++ gibi o değişkene müdahale eden bir şey olmasaydı gamers = 0 constructor içine yazılabilirdi diye biliyorum.

Şimdi deneyeceğim. Sonucu yazarım.

Birkaç farklı şekilde denedim ama çalıştırmayı beceremedim.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…