C++ sınıflar ve nesneler

bedrhnaliakcy

Hectopat
Katılım
16 Temmuz 2018
Mesajlar
142
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Meslek
İndie software
C++:
#include <iostream>
using namespace std;
class ornek{
    int notlar;
public:
    friend void al(ornek ogrenci);
    friend void goster(ornek ogrenci);
}ogr1,ogr2,ogr3;
void al(ornek ogrenci){
    cout << "notu gir: ";
    cin >> ogrenci.notlar;
}
void goster(ornek ogrenci){
    cout << "ogrencinin notu: " << ogrenci.notlar << endl;
}
int main() {
    al(ogr1);
    al(ogr2);
    al(ogr3);

    goster(ogr1);
    goster(ogr2);
    goster(ogr3);

    return 0;
}

Arkadaşlar kod bu.

Soru ise şu
: Bir sınıf içerisinde not adında private bir değişken tanımlayınız. Bu sınıfın al() isimli friend fonksiyonu kullanıcıdan 3 öğrencinin not bilgilerini alsın ve bunları yine bu sınıfın friend olan goster() fonksiyonu ile ekrana yazdırınız.

Sorun ise şu:
/*
notu gir: 50
notu gir: 23
notu gir: 23
ogrencinin notu: 0
ogrencinin notu: 0
ogrencinin notu: 0
*/
Çıktı ise böyle oluyor bir şeyi yanlış yazdım ama ne yardımcı olursanız sevinirim.
 
C++ class yapısını tekrardan incelemeni öneririm.
Ornek class'ını oluşturup buradan bir nesne oluşturmadan doldurmaya çalışıyorsun.

Sınıfın nesneleri var. ogr1,ogr2,ogr3 diye oluşturdum kodun içerisinde var.
Aslında hiç hata vermiyor. Kodlar sorunsuz çalışıyor ama yazmaya gelince hepsi 0 oluyor.
 
Eğer aldığınız bir değişkeni değiştirecekseniz, veya bir sınıfın elemanını değiştirecekseniz, fonksiyonlarda referans veya işaretçi kullanmaya alışın.

[CODE lang="cpp" title="Düzenlenmiş hali"]#include <iostream>
using namespace std;
class ornek{
int notlar;
public:
friend void al(ornek& ogrenci);
friend void goster(ornek& ogrenci);
}ogr1,ogr2,ogr3;
void al(ornek& ogrenci){
cout << "notu gir: ";
cin >> ogrenci.notlar;
}
void goster(ornek& ogrenci){
cout << "ogrencinin notu: " << ogrenci.notlar << endl;
}
int main() {
al(ogr1);
al(ogr2);
al(ogr3);

goster(ogr1);
goster(ogr2);
goster(ogr3);

return 0;
}[/CODE]

Böylelikle, fonksiyon içerisinde değişkenin bir kopyasını oluşturmak yerine, direkt olarak değişkenin bulunduğu adreste işlem yaparsınız.
 
Eğer aldığınız bir değişkeni değiştirecekseniz, veya bir sınıfın elemanını değiştirecekseniz, fonksiyonlarda referans veya işaretçi kullanmaya alışın.

[CODE lang="cpp" title="Düzenlenmiş hali"]#include <iostream>
using namespace std;
class ornek{
int notlar;
public:
friend void al(ornek& ogrenci);
friend void goster(ornek& ogrenci);
}ogr1,ogr2,ogr3;
void al(ornek& ogrenci){
cout << "notu gir: ";
cin >> ogrenci.notlar;
}
void goster(ornek& ogrenci){
cout << "ogrencinin notu: " << ogrenci.notlar << endl;
}
int main() {
al(ogr1);
al(ogr2);
al(ogr3);

goster(ogr1);
goster(ogr2);
goster(ogr3);

return 0;
}[/CODE]

Böylelikle, fonksiyon içerisinde değişkenin bir kopyasını oluşturmak yerine, direkt olarak değişkenin bulunduğu adreste işlem yaparsınız.
Çok teşekkür ederim yardımcı olduğunuz için.
 

Geri
Yukarı