[英]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.