如何从c ++中的派生类中获取值

时间:2017-05-16 04:18:03

标签: c++

我无法从派生类name访问值a到类b。我怎么能这样做?

#include<iostream>
#include<string>
using namespace std;

class a
{

public:
    void getname()
    {
        string name; //trying to access value from other child class
        cout << "enter your name" << endl;
        getline(cin, name);
        cout << " your name is " << name << endl;
    }
};
class b: public a
{
    int age;

public:
    void old()
    {
        cout << "enter your age" << endl;
        cin >> age;
        cout << "your age is" << age << endl;
    }
    void print()
    {
        cout << " your name is " << name << endl; //cant access it
        cout << "your age is" << age << endl;
    }
};

int main()
{
    b o;
    o.getname();
    o.old();
    o.print();
    return 0;
}

我只能使用班级b中的该功能,但无法访问班级a中的值。

1 个答案:

答案 0 :(得分:1)

您在getname()函数中声明了 name ,而不是作为类成员。在函数内部声明的变量具有块范围,这意味着它们不再存在于该函数之外。这里有更多关于范围的内容。 http://en.cppreference.com/w/cpp/language/scope它也可以帮助您使用类范围/类成员。

尝试更改类 a ,如下所示:

class a {
   protected:
        string name;
    public:
        void getname() {
            cout << "enter your name" << endl;
            getline ( cin,name);
            cout << " your name is " << name << endl;
    }
};