如何访问子项的受保护变量

时间:2016-06-28 17:48:56

标签: c++ oop

我读了下面的陈述,我不确定它是否属实,如果你能用一个例子说明的话。

  

子进程可以访问基类的相同成员变量   这是相同的实例。

我遇到的问题是如何访问孩子的受保护变量

  class A
    {
     private:
       class B* myBclass; 
     protected:
       int bc; 
     }

    class ChildofA : public A
    {
      public:
         childofA() {};
    }

    class B
    {
      public :
       B() {};
       virtual void fun1(A* anA);
    }


    class childofB : public B
    {
      public :
        void fun1(A* anA) 
           {
              anA.bc=1; << Problem here 
            }

    }

上述代码抱怨变量bc受到保护。 我想让ChildofB中的fun1()检索子类ChildofA的实例的变量bc。你如何解决这个问题(没有朋友方法和获取/设置者)。

1 个答案:

答案 0 :(得分:3)

这意味着childOfA可以访问bc,尽管A已声明B。子进程可以访问所有公共和受保护的实例变量。受保护的手段是“私人的,但对我和我的后代而言,而不仅仅是对我”。

继承不会在A层次结构中提供查看friend层次结构中事物的私有存储的能力。如果你真的必须声明bc,虽然它可能是糟糕的风格,或者app.get('/location/:slug', function (req, res) { Async.parallel([ function (callback) { var query = Location.findOne({ slug: req.params.slug}) query.exec(function(err, location) { if (err) { callback(err) } callback(null, location) }) }, function (callback) { var query = Location.find({ slug: 'english' }); // language 'english' is set in local storage. query.exec(function (err, language) { if (err) { callback(err) } callback(null, language) }) } ], function(err, results) { if (err) { console.log(err) return res.send(400) } if (results == null || results[0] == null) { return res.send(400) } res.render('pages/single-location', { location: results[0], setLanguage: results[1][0] }) }) }) 是否可供其他类访问,然后公开。

相关问题