Class içinde değer tanımlaması yapamazsın, bir constructor fonksiyonu açıp onun içinde tanımlama yapman lazım.
Benim bildiğim öyle değil. Nereden öğrendiniz bu bilgiyi?Class içinde değer tanımlaması yapamazsın, bir constructor fonksiyonu açıp onun içinde tanımlama yapman lazım.
#pragma once
#include <iostream>
#include <string>
class Admin {
public:
Admin();
Admin(std::string username, int password);
void show();
int getAdminPassword();
std::string getAdminUsername();
private:
const int ADMIN_PASSWORD = 1234;
int adminPassword;
const std::string ADMIN_USERNAME = "admin";
std::string adminUsername;
};
#include "Admin.h"
Admin::Admin() {
}
Admin::Admin(std::string username, int password) :adminUsername{ username }, adminPassword{ password } {
}
void Admin::show() {
std::cout << "Kullanici adi girin: ";
std::cin >> adminUsername;
if (ADMIN_USERNAME == adminUsername) {
std::cout << "Kullanici adi dogru. Giris basarili." << std::endl;
}
else {
std::cout << "Kullanici adi yanlis. Lutfen tekrar deneyiniz." << std::endl;
}
}
int Admin::getAdminPassword() {
return adminPassword;
}
std::string Admin::getAdminUsername() {
return adminUsername;
}
#include <iostream>
#include <algorithm>
#include <string>
#include "Admin.h"
using namespace std;
int main() {
auto secim{ 0 };
cout << "ANA MANU" << endl
<< "1- Admin Girisi" << endl
<< "2- Uye Girisi" << endl
<< "3- Cikis" << endl;
cout << "Seciminizi girin: ";
cin >> secim;
switch (secim) {
case 1:
cout << "" << endl;
break;
case 2:
cout << "Uye" << endl;
break;
case 3:
cout << "Cikis" << endl;
break;
default:
cout << "Hatali tuslama yaptiniz." << endl;
break;
}
Admin admin("ahmet", 123);
admin.show();
return 0;
}
Dolusuyla hata var, hangi birisinden başlasam ki.
İlki Visual Studio'yu Türkçe kullanmak. Aldığınız hataları ne siz, ne onu çeviren kişi, ne de benim anladığımı sanmıyorum. Türk herhangi birinin de hepsini güzelce anlayabildiğini sanmıyorum.
Cstring eklemek. Gerçekten onu kullanacağınız bir şey olduğunu da sanmıyorum.
Sınıflarda namespace kullanmamanızı tavsiye ederim. Kimlerin onu include edeceği belli değil. Adam bir anda bildiği bir Namespace'i kullanmaya başlamış olabilir.
Ufak bir şeyler yaptım. Çalışıyor olması lazım. Genel mantığı anlamışsınızdır.
İsterseniz salt okunur bir dosya hazırlayıp oradan da okuyabilirsiniz.
Benim bildiğim öyle değil. Nereden öğrendiniz bu bilgiyi?
Benim yaptığım şekilde yapınca ilk nesne oluştuğunda ilklendirme yapılıyor olması lazım.
Kod:#pragma once. #include <iostream> #include <string> class Admin { public: Admin(); Admin(std::string username, int password); void show(); int getAdminPassword(); std::string getAdminUsername(); private: const int ADMIN_PASSWORD = 1234; int adminPassword; const std::string ADMIN_USERNAME = "admin"; std::string adminUsername; };
Kod:#include "Admin.h" Admin::Admin() { } Admin::Admin(std::string username, int password) :adminUsername{ username }, adminPassword{ password } { } void Admin::show() { std::cout << "Kullanici adi girin: "; std::cin >> adminUsername; if (ADMIN_USERNAME == adminUsername) { std::cout << "Kullanici adi dogru. Giris basarili." << std::endl; } else { std::cout << "Kullanici adi yanlis. Lutfen tekrar deneyiniz." << std::endl; } } int Admin::getAdminPassword() { return adminPassword; } std::string Admin::getAdminUsername() { return adminUsername; }
Kod:#include <iostream> #include <algorithm> #include <string> #include "Admin.h" using namespace std; int main() { auto secim{ 0 }; cout << "ANA MANU" << endl. << "1- Admin Girisi" << endl. << "2- Uye Girisi" << endl. << "3- Cikis" << endl; cout << "Seciminizi girin: "; cin >> secim; switch (secim) { case 1: cout << "" << endl; break; case 2: cout << "Uye" << endl; break; case 3: cout << "Cikis" << endl; break; default: cout << "Hatali tuslama yaptiniz." << endl; break; } Admin admin("ahmet", 123); admin.show(); return 0; }
Benim bildiğim öyle değil. Nereden öğrendiniz bu bilgiyi?
Benim yaptığım şekilde yapınca ilk nesne oluştuğunda ilklendirme yapılıyor olması lazım.
@Vavien. nickli arkadaşın yazdığı cevapta açıladığı için tekrar yazmaya gerek duymadım o şekilde kullanabilirsiniz.O zaman ben nasıl kullanıcı adı şifre belirleyeceğim admin.
Sanırım const olmasıyla alakalı sandınız. Konu sahibi sabit bir şey istediği için const yaptım. Hatta isterseniz onu constexpr yapmaya çalışabilirsiniz. Yapamayacağınızı fark edeceksiniz. Const olmasıyla alakasız. İlk değer .h dosyasında verilebilir. Ama o değer sınıfın ilk nesnesi oluştuğunda atanacaktır. Ondan önce erişilmeye çalışılırsa hata alınır.Sizin yapmış olduğunuz şey class üzerinde "sabit" bir değişken açmak, sonradan değiştirilen bir class üyesi değil.