我有一个与C ++中的私有继承有关的问题。
我的问题是基于与此页面here相关的参考。
(在标题“但是如果我们需要继承该怎么办?”下)

关键是我声明了具有公共虚函数的基类。然后,我在私有继承下继承基类,并将其命名为派生类。如下图所示

    class base {
            public:
            base() {}
            virtual ~base() {}
            virtual void func_1() {
                cout<<"base func1"<<endl;
            }
            void func_t() {
                cout<<"base funct"<<endl;
                func_3();
            }
            private:
            void func_3() {
                cout<<"base func3"<<endl;
                func_1();
            }
        };

class derived: private base {
public:
    derived() {}
    ~derived() {}
    virtual void func_1() {
        cout<<"derived func1"<<endl;
    }
};

base* b = new derived;
b->func_t();


上面的陈述给出了错误,指出base是派生的不可访问的基础。
如果要在派生函数的上述函数调用函数中调用func_1,该怎么办?

最佳答案

private表示无法从外部访问名称和成员。与私人基层的对话是一种偶然。您可以简单地将此对话包装到成员函数中以使其起作用:

class derived
  : private base {
public:
    // other stuff

    base* get_base() {
        return this;
    }
};

derived* d = new derived;
base* b = d->get_base();
b->func_t();

关于c++ - 来自客户端的私有(private)继承用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17831030/

10-11 22:46
查看更多