C++类继承设置"classA"数据成员等于"ClassB"

C++ class inheritance setting "classA" data member equal to "ClassB"

本文关键字:ClassB 数据成员 classA 继承 设置 C++      更新时间:2023-10-16

我试图有一个成员函数的类a设置值为任何值的类b是。我并没有完全理解继承,所以如果这是一个简单或愚蠢的错误,请原谅我。另外,将转换函数作为两个类的朋友会更容易吗?

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;
}

如果你能说明你想用这个设计解决的问题,你的问题就会更容易回答,但我还是要加几美分。

我试图有一个类a的成员函数设置值为什么B类的值为。

由于A继承了B,所以这没有多大意义。A 是一个 B,如果A有B作为一部分,即

,则更有意义。
class A{
    B partOfA;

你的名字convert表明你可能想要将B类型的对象转换为A类型的对象,这也很奇怪但是你可以通过构造函数

来实现
A(const B& b):B(b){}

所以不是做"转换"而是创建一个新对象

B b;
A a(b);

如果您的唯一目标是从B访问x.valueb,则需要B中的公共访问器成员,参见实例访问派生类中的受保护成员