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