2017-01-11 6 views
2

こんにちは私はログインシステムを実装しようとしていますが、何度も試してみましたが、まだそれは得られません。 私はクラスユーザーとクラスログインを持っていますが、テスト関数..iはチュートリアルの後にこれを試しましたが、そこにはデフォルトのユーザー名とパスワードがあり、ログインしていましたが、各ユーザーのログイン。クラスを使用したログインシステム

class User{ 

private: 

char *username; 
char *password; 

public: 
User(){} 
User(char *,char *p){...} 
~User(); 
friend ostream &operator<<(ostream &output, User &u); 
char* getUsername(){...}; 
char* getPassword(){...}; 
}; 

class Loginn 
{ 
public: 
    string username; 
    string password; 

    Loginn() 
    { 
     username = "\0"; 
     password = "\0"; 
    } 

    }; 

bool Loginn::ptlogin(User users[]) 
{ 
    int x; 
    string ch_username = users[x].getUsername; 
    string ch_password = users[x].getPassword; 
    cout << "Enter username::\t"; 
    cin >> username; 
    cout << "Enter password::\t"; 
    cin >> password; 


    if ((username == ch_username)&&(password =ch_password)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 


void MainMenu(User users[]); 
{ 
//this is from where I want to call login function, not from main() 
} 

void main() 
{ 


    User u2("Jamie15","t3456"); 
    User u3("Chris","fgh6"); 

User users[2]={u2,u3}; 

MainMenu(users); 


} 

入力したユーザー名とパスワードがユーザーのパスワードとユーザー名と一致するかどうかをテストするようにします。私のユーザーはu2とu3です。ありがとうございました! また、ユーザーのデータ型はchar型のままにする必要がありますが、変更できません。

+0

このコードは表示されませんそれがコンパイルされるように。実際のコードを表示します。これを無視すると、 'password = ch_password' --->' password == ch_password'となります。 –

+0

それはそれです..私はそれが動作するようにはわかりません... – Anais

+0

"C++ログインシステムの例"または "stackoverflow C++ログインシステム"についてインターネットを調査する可能性はありますか?すでに多くの類似の質問があります。 –

答えて

1

Loginn::ptloginメソッドでは、インデックス変数xは初期化されていません。

の式:
users[x].getUsername;

あなたがアクセス権を持っていないメモリまたはアクセスメモリから何かを返すことができます。すべてランダムで、初期化されていない値xのインデックスに依存します。

アレイの代わりにstd::vectorを使用することを強くお勧めします。また、参照しているインデックスを渡す(または少なくとも初期化する)。

編集1:MainMenu機能
ためにコールログイン機能に、あなたのいずれかがLoginクラスのインスタンス(変数)を持っているか、staticとしてログイン機能を作成する必要があります。

void MainMenu(std::vector<User>& users) 
{ 
    Loginn instance; 
    instance.ptlogin(users); 
} 

代替はmainにログインインスタンスを作成し、MainMenuにそれを渡すことです:

void MainMenu(std::vector<User>& users, 
       Loginn& instance); 

int main(void) 
{ 
    std::vector<User> users; 
    Loginn instance; 
    MainMenu(users, instance); 
    return EXIT_SUCCESS; 
} 

編集2:静的メソッド
あなたがstaticメソッドを持っている場合は、あなたが「ドンメソッドを呼び出すためのインスタンスが必要です。

class Loginn 
{ 
    public: 
    static void ptlogin(std::vector<User>& users); 
}; 

void MainMenu(std::vector<User>& users) 
{ 
    Loginn::ptLogin(users); 
} 
関連する問題