大家好我正在努力学习类和对象的基础知识。 据我所知,我的语法是正确的,但我用我的程序得到这些错误消息......
错误:' A'未在范围内宣布
错误:' a'未在范围内宣布
错误:' UIClass'未在范围内宣布
错误:' AgeObject'未在范围内宣布
错误:预期';'之前' NameObject'
错误:' NameObject'未在范围内宣布
错误:预期';'之前' ResultObject'
错误:' ResultObject'未在范围内宣布
#include <iostream>
#include <string>
using namespace std;
class UI{
public:
void Age(){
int a;
cout << "Age?" << endl;
cin >> a;}
void Name(){
string A;
cout << "Name" << endl;
cin >> A;}
void Results(){
cout << "Your name is " << A << "and you are " << a << " years old." << endl;
}
};
int main ()
{
cout << "Enter Your Name and Age?" << endl;
UIClass; AgeObject;
AgeObject.Age();
UIClass NameObject;
NameObject.Name();
UIClass ResultObject;
ResultObject.Results();
return 0;
}
答案 0 :(得分:1)
因此,在您的代码中,在Results方法中,您尝试访问那里未声明的变量。
所以你有:
void age()
{
// does stuff with age
}
void name()
{
// does stuff with name
}
变量仅存在于这些方法中。因此,当你试图从Results()中找到他们时,你会得到一个&#34;超出范围&#34;错误。
所以你可以做的是声明另外四个方法,setAge,setName将接受如下参数:
class UI
{
private:
int age;
string name;
public:
void setAge(int ag)
{
age = ag;
}
int getAge()
{
return age;
}
然后,您将void age()方法更改为以下内容:
void age()
{
// Do the stuff you've already done
setAge(a);
}
然后当你尝试完成输出时:
cout << "Your name is " << getName() << " and you are " << getAge() << " years old." << endl;
哪一本预订你正在使用,他们真的应该解释这种东西。如果没有,我会得到一个新的。这是您用C ++编写的最基本的程序之一。
我没有给你完整的答案,但这应该鼓励你并给你一个起点。希望这一切都有所帮助。
快乐的编码。
答案 1 :(得分:0)
错误清楚地表明变量声明超出范围。变量int a
和string A
在函数内部声明,当您尝试使用该函数以外的函数时,它们超出范围。声明为类的公共变量。您还实例化了3个UI对象来调用三个函数,您不应该这样做,因为每个对象都有自己的内存。实例化一个对象并调用函数。
class UI
{
public:
int a;
string A;
void Age()
{
//int a; remove the local varaible, 'a' can't be used outside function Name
cout << "Age?" << endl;
cin >> a;
}
void Name()
{
//string A; remove the local varaible, 'A' can't be used outside function Name
cout << "Name" << endl;
cin >> A;
}
void Results()
{
cout << "Your name is " << A << "and you are " << a << " years old." << endl;
}
};
答案 2 :(得分:0)
您已将a
和A
声明为Name
和Age
方法的局部变量,因此Results
方法无法使用它们。你可能想让它们成为成员变量。将其声明移动到类范围而不是方法范围。此外,a
和A
是有史以来最糟糕的名字!
然后,声明该类的三个单独实例(除了在类和实例名称之间添加了一个分号),并在另一个实例上调用每个方法。尝试创建一个实例,并在其上调用所有三个方法。
哦,请了解如何缩进代码......