我无法从派生类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
中的值。
答案 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;
}
};