C++ class 继承设置 "classA" 数据成员等于 "ClassB"
C++ class inheritance setting "classA" data member equal to "ClassB"
我试图让 classA 的成员函数将 valuea 设置为 classB 的 valueb。我真的没有完全掌握继承,所以如果这是一个简单或愚蠢的错误,请原谅我。另外,让 convert 函数成为 类 的朋友会更容易吗?
class B
{
protected:
int valueb;
public:
B() { }
B(int x) {valueb=x;}
};
class A: public B
{
int valuea;
public:
A():B() {}
A(int x):B(x) {valuea=x;}
void convert(B x)
{
valuea = x.valueb;
}
int getValue() {return valuea;}
};
int main( )
{
A a(1);
B b(2);
a.convert(b);
cout << a.getValue() << endl;
}
如果您陈述了您试图用此设计解决的问题,您的问题会更容易得到回答,但我会投入几分钱。
I'm trying to have a member function of class A set valuea to what ever
valueb of class B is.
这没有多大意义,因为 A 继承自 B。A 是一个 B。如果 A 有 B 作为一部分会更有意义,即
class A{
B partOfA;
你的名字 convert 表明你可能想将类型 B 的对象转换为类型 A 的对象,这也很奇怪,但你可以通过构造函数来做到这一点
A(const B& b):B(b){}
因此,您无需执行 "conversion",而是创建一个新对象
B b;
A a(b);
如果您的唯一目标是从 B 访问 x.valueb
,您需要 B 中的 public 访问成员。参见 Accessing protected members in a derived class
我试图让 classA 的成员函数将 valuea 设置为 classB 的 valueb。我真的没有完全掌握继承,所以如果这是一个简单或愚蠢的错误,请原谅我。另外,让 convert 函数成为 类 的朋友会更容易吗?
class B
{
protected:
int valueb;
public:
B() { }
B(int x) {valueb=x;}
};
class A: public B
{
int valuea;
public:
A():B() {}
A(int x):B(x) {valuea=x;}
void convert(B x)
{
valuea = x.valueb;
}
int getValue() {return valuea;}
};
int main( )
{
A a(1);
B b(2);
a.convert(b);
cout << a.getValue() << endl;
}
如果您陈述了您试图用此设计解决的问题,您的问题会更容易得到回答,但我会投入几分钱。
I'm trying to have a member function of class A set valuea to what ever valueb of class B is.
这没有多大意义,因为 A 继承自 B。A 是一个 B。如果 A 有 B 作为一部分会更有意义,即
class A{
B partOfA;
你的名字 convert 表明你可能想将类型 B 的对象转换为类型 A 的对象,这也很奇怪,但你可以通过构造函数来做到这一点
A(const B& b):B(b){}
因此,您无需执行 "conversion",而是创建一个新对象
B b;
A a(b);
如果您的唯一目标是从 B 访问 x.valueb
,您需要 B 中的 public 访问成员。参见 Accessing protected members in a derived class