簡體   English   中英

如何從其朋友類訪問抽象類的私有成員?

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

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 必須具有一個實例對象。 為了訪問ab B將看到實例對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM