如何从抽象类的友类访问抽象类的私有成员

How to access private members of an abstract class from its friend class?

本文关键字:抽象类 成员 访问      更新时间:2023-10-16
class A  
{  
private:  
        int a,b,c;  
public:
        virtual int get()=0;
         friend class B;
};
class B{
//here I want to access private variables of class A that is a, b and c
};
class C:public class A
{  
        int get(){    
       //some code  
        }  
};

如何在类b中访问类A的私有成员。我不能创建类A的对象,因为它是抽象的。我必须使用C类的对象来实现,但怎么做呢?

class A {
    friend class B;
private:
    int x;
public:
    A() : x(42) {}
};
class C : public A {
};
class B {
public:
    int reveal_secrets(C &instance){
        // access private member
        return instance.x;
    }
    int reveal_secrets(){
        // access private member of instance created inside B
        C instance;
        return instance.x;
    }
};
void print_secrets(){
    C instance;
    B accessor;
    std::cout << accessor.reveal_secrets(instance) << ", " << accessor.reveal_secrets() << std::endl;
}

class B首先具有来处理实例对象。这个实例对象是B为了访问a, b等而查看的