今天我开始学习c ++,我开始用简单的代码理解,但这让我很困惑
#include <iostream>
using namespace std;
class MyVar
{
public:
MyVar(){
cout << "this is constructor" << endl;
}
void accesscheckpass(string x){
checkpass(x);
}
private:
bool checkpass(string x){
if(x == "password"){
return true;
}
}
};
int main()
{
int inputpass;
cout << "please enter your password\n" << endl;
cin >> inputpass;
MyVar MyAccess;
if(MyAccess.accesscheckpass(inputpass) == true){
cout << "welcome user 1" << endl;
}else{
cout << "get lost !" << endl;
}
}
我想在用户输入密码时验证用户,然后何时进入IF部分,当我想编译它时,编译器返回状态“从'int'无效转换为'const char *'[-fpermissive ] |“,请有人修理我的代码并解释我错了什么?
答案 0 :(得分:4)
请有人修理我的代码
在我们解释错误之后,尝试自己修复它。你可以从中获得比我们发布你的代码更多的东西。
解释我错了什么
不确定。方法accesscheckpass
需要std::string
作为参数(顺便说一下,您需要在文件顶部#include <string>
)。你把它称为
MyAccess.accesscheckpass(inputpass)
但inputpass
被声明为int inputpass;
,因此它是int
,而不是std::string
。因此,您必须将inputpass
声明为string
,或者了解如何将int
转换为string
。 (应该很容易)
另外,你的方法:
bool checkpass(string x){
if(x == "password"){
return true;
}
}
仅在条件为真时返回。你也应该有一个else
分支:
else
return false;
或者,更好的是,直接返回结果。
bool checkpass(string x){
return x == "password";
}
和你的方法
bool accesscheckpass(string x){
return checkpass(x);
}
也应该返回bool
。
答案 1 :(得分:1)
#include <iostream>
#include <string>
using namespace std;
class MyVar
{
public:
MyVar(){
cout << "this is constructor" << endl;
}
bool accesscheckpass(string x){
return checkpass(x);
}
private:
bool checkpass(string x){
if( x == "password" ){
return true;
}
else
return false;
}
};
int main()
{
string inputpass;
cout << "please enter your password\n" << endl;
cin >> inputpass;
MyVar MyAccess;
if( MyAccess.accesscheckpass(inputpass) == true ){
cout << "welcome user 1" << endl;
}else{
cout << "get lost !" << endl;
}
}
以上是更正的工作代码。发现的错误如下:
答案 2 :(得分:0)
accesscheckpass(string x)
应该返回bool。
bool accesscheckpass(string x){
return checkpass(x);
}
此外,inputpass
的类型应为std::string
答案 3 :(得分:0)
变化:
int inputpass
到
string inputpass
由于您的密码是字符串,而不是整数。
另外,你的课程充满了错误!它应该看起来像这样:
class MyVar
{
public:
MyVar(){
cout << "this is constructor" << endl;
}
bool accesscheckpass(string x){
return checkpass(x);
}
private:
bool checkpass(string x){
if(x == "password"){
return true;
}
else
{
return false;
}
}
};
答案 4 :(得分:0)
以下是代码,您需要的是什么,它不是最好的代码,但它有效:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class MyVar
{
public:
MyVar(){
cout << "this is constructor" << endl;
}
bool accesscheckpass(string x){
return checkpass(x);
}
private:
bool checkpass(string x){
string pass = "password";
for(int i = 0; i < x.length();i++)
if(x[i]!=pass[i])
return false;
return true;
}
};
int main()
{
string inputpass;
cout << "please enter your password\n" << endl;
getline(cin, inputpass);
MyVar MyAccess;
if(MyAccess.accesscheckpass(inputpass) == true){
cout << "welcome user 1" << endl;
}else{
cout << "get lost !" << endl;
}
}
答案 5 :(得分:-2)
你读了std::cin
字符。您需要将这些字符解析为整数。