1
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 类的对象来做到这一点,但如何?

4

2 回答 2

4
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;
}
于 2014-07-03T14:35:32.703 回答
1

class B首先必须一个实例对象才能使用。 实例对象是B为了访问 , 等而a查看b对象

于 2014-07-03T14:06:49.507 回答