How to access protected members in a derived class?

前端 未结 6 2068
说谎
说谎 2021-01-14 01:47

From http://www.parashift.com/c++-faq-lite/basics-of-inheritance.html#faq-19.5

A member (either data member or member function) declared in a protecte

6条回答
  •  青春惊慌失措
    2021-01-14 02:11

    Well, if friend is ok, then this angle may as well be ok:

    #include 
    
    class X {
    private:
        int var;
    protected:
        virtual void fun() {
            var = 10;
            std::cout << "\nFrom X" << var;
        }
    
        static void Fun(X& x) {
            x.fun();
        }
    };
    
    class Y : public X {
    private:
        int var;
    public:
        virtual void fun() {
            var = 20;
            std::cout << "\nFrom Y" << var;
        }
    
        void call() {
            fun();
            X objX;
            objX.fun(); /* << ne-ne */
            Fun(objX); /* << ok */
        }
    };
    

    Of course, be mindful of the type you pass to X::Fun if you use this as-is.

提交回复
热议问题