簡體   English   中英

C ++中的分段錯誤

[英]Segmentation fault erore in c++

當我運行下面的代碼時,這個類是為注冊而編寫的,我會收到分段錯誤嗎? 什么原因 ? 我該如何解決? 我的代碼問題在哪里? 我在android中使用了c4droid,請幫忙。

#include <iostream>
#include <string>
using namespace std;
// registration class
class registration 
{
public:
string signup ();
string signin ();
private:
string newuser, newpass, 
user, pass;
};
// signup function 
string registration::signup()
{
cout << " sign up :) " << endl;
cout << " please Enter username : ";
cin >> newuser;
cout << " please Enter password : ";
while (cin >> pass)
{
     cout << " registration complete ;) " << endl;
     break;
}
}
// signin function 
string registration::signin()
{
cout << " signin :) " << endl;
cout << " please Enter username : ";
cin >> user;
cout << " please Enter password : ";
cin >> pass;
if (user == newuser && pass == newpass)
    cout << " you logged in ; ";
else
    cout << " wrong username or password, please try again ";
}
// main
int main ()
{
cout << " welcome " << 
endl;
registration sign;
sign.signup();
sign.signin();
}

圖片

你的方法被聲明為

string registration::signin()

即您聲明它返回一個string ,但您沒有從該方法返回任何內容。 另一種方法也有同樣的問題。 不從您聲明返回某些內容的函數中返回某些內容是未定義行為1 簡而言之,這意味着您的代碼不正確,編譯器不需要進行診斷,可以產生他們認為的任何輸出,並且當您運行代碼時,任何事情都可能發生。

要么返回一些東西,要么用void return 聲明它們。

另一個問題是,在signup您讀取pass並且在signin您讀取pass並將其與newpass進行比較。 我想你想讓這兩個函數讀入兩個不同的成員,然后比較它們。

1 : main是一個異常,因為:如果控制到達main的末尾,沒有遇到return語句,效果就是執行return 0;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM