19
class A
{
   protected:
    string word;
};

class B
{
   protected:
    string word;
};

class Derived: public A, public B
{

};

では、変数のアクセシビリティはどのようwordに影響を受けDerivedますか? どうすれば解決できますか?

4

4 に答える 4

35

あいまいになり、それを示すコンパイル エラーが発生します。

それを使用するには、適切なスコープを使用する必要があります。

 class Derived: public A, public B
{
    Derived()
    {
        A::word = "A!";
        B::word = "B!!";
    }
};
于 2013-11-04T08:25:02.600 に答える
5

クラスDerivedには 2 つの変数がB::wordあり、A::word外部からは次のDerivedようにアクセスできます (アクセスを public に変更した場合)。

Derived c;
c.A::word = "hi";
c.B::word = "happy";

name のフィールドはなく、A::word と B::word しかないため、アクセスしようとするc.wordエラーが発生します。word

内部Derivedでは、通常のフィールドのように動作し、名前が付けられ、他の回答A::varでも言及されています。B::var

于 2013-11-04T08:26:46.030 に答える
3

wordのクラスでアクセスするときDerivedは、宣言する必要がありました

class Derived: public A, public B
{
    Derived()
    {
       A::word = X;
       //or
       B::word = x;
    }
};
于 2013-11-04T08:24:50.650 に答える