Jac*_*her 18 c++ multiple-inheritance
class A
{
protected:
string word;
};
class B
{
protected:
string word;
};
class Derived: public A, public B
{
};
Run Code Online (Sandbox Code Playgroud)
如何word影响变量的可访问性Derived?我该如何解决?
Yoc*_*mer 31
这将是模糊的,你会得到一个编译错误说.
您需要使用正确的范围来使用它:
class Derived: public A, public B
{
Derived()
{
A::word = "A!";
B::word = "B!!";
}
};
Run Code Online (Sandbox Code Playgroud)
Som*_*ude 22
您可以使用该using关键字告诉编译器使用哪个版本:
class Derived : public A, public B
{
protected:
using A::word;
};
Run Code Online (Sandbox Code Playgroud)
这告诉编译器Derived该类有一个受保护的成员word,它将是一个别名A::word.然后,无论何时word在Derived类中使用非限定标识符,都意味着A::word.如果您想使用B::word,则必须完全限定范围.
您的类Derived将有两个变量,B::word并且A::word之外Derived,你可以这样访问它们(如果你改变自己的公众访问):
Derived c;
c.A::word = "hi";
c.B::word = "happy";
Run Code Online (Sandbox Code Playgroud)
尝试访问c.word将导致错误,因为没有名称的字段word,但只有A :: word和B :: word.
在内部,Derived他们表现得像普通的领域,再次,与名称,A::var并B::var在其他答案中也提到.
| 归档时间: |
|
| 查看次数: |
4027 次 |
| 最近记录: |