初学者在c ++简单程序

时间:2014-03-29 08:24:50

标签: c++ object

大家好我正在努力学习类和对象的基础知识。 据我所知,我的语法是正确的,但我用我的程序得到这些错误消息......

错误:' 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;

}

3 个答案:

答案 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 astring 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)

您已将aA声明为NameAge方法的局部变量,因此Results方法无法使用它们。你可能想让它们成为成员变量。将其声明移动到类范围而不是方法范围。此外,aA是有史以来最糟糕的名字!

然后,声明该类的三个单独实例(除了在类和实例名称之间添加了一个分号),并在另一个实例上调用每个方法。尝试创建一个实例,并在其上调用所有三个方法。

哦,请了解如何缩进代码......