我读了下面的陈述,我不确定它是否属实,如果你能用一个例子说明的话。
子进程可以访问基类的相同成员变量 这是相同的实例。
我遇到的问题是如何访问孩子的受保护变量
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。你如何解决这个问题(没有朋友方法和获取/设置者)。
答案 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]
})
})
})
是否可供其他类访问,然后公开。