Я исправил это, добавив следующее к моему ~ / .bash_profile:
#PATH for rbenv
export PATH="$HOME/.rbenv/shims:$PATH"
Это то, что задокументировано в https://github.com/sstephenson/rbenv .
Из того, что я могу сказать, нет каталога ~ / .rbenv / bin, о котором упоминалось в сообщении @rodowi.
Вы можете получить доступ только к защищенным членам в экземплярах вашего типа (или получить от вашего типа). Вы не можете получить доступ к защищенным членам экземпляра родительского или двоюродного типа.
В вашем случае класс Derived
может получить доступ только к члену b
экземпляра Derived
, а не к другому Base
.
Изменение конструктора для получения экземпляра Derived
также решит проблему.
У вас есть доступ к защищенным членам Derived
, но не к Base
(даже если единственная причина, по которой это защищенный член Derived
, состоит в том, что он унаследован от Base
)
protected
можно получить:
this
указатель Чтобы решить ваше дело, вы можете использовать один из двух последних вариантов.
Accept Производится в Derived :: DoSomething или объявляет Derived friend
к базе:
class Derived;
class Base
{
friend class Derived;
protected:
int b;
public:
void DoSomething(const Base& that)
{
b+=that.b;
}
};
class Derived : public Base
{
protected:
int d;
public:
void DoSomething(const Base& that)
{
b+=that.b;
d=0;
}
};
В некоторых случаях вы также можете рассматривать публичные геттеры.
Как уже упоминалось, это именно то, как работает язык.
Другим решением является использование наследования и переход к родительскому методу:
class Derived : public Base
{
protected:
int d;
public:
void DoSomething(const Base& that)
{
Base::DoSomething(that);
d=0;
}
};
class Derived : public Base
{
protected:
int d;
public:
void DoSomething()
{
b+=this->b;
d=0;
}
};
//this will work
Button
не может получить доступ к защищенному свойству изControl
наTextBox
. – SLaks 5 February 2012 в 05:07You can only access your base class' protected members in an instance of your type, not a cousin type
Вы снова написали одно и то же заявление, которое вы написали выше. Пожалуйста, смотрите здесь: stackoverflow.com/questions/9139824/… – Aquarius_Girl 6 February 2012 в 05:52