0

非常に単純な質問ですが、まだ混乱しています。

using ディレクティブが継承を変更するのはなぜですか!? これは Comeau でコンパイルされます。

using ディレクティブ (宣言?) によって変数が public になると読みましたが、なぜですか? 私が欲しいのは、常に B 内に記述しないという素晴らしい方法this->xです...?

class A{
protected:
    int x;
public:
};

class B: public A {
public:
    using A::x;
};

int main(){
  B b;
  b.x = 2;
}

ありがとう!

4

2 に答える 2

2

あなたはクラスの設計者であり、変数を公開することが許可されています。

それを望まない場合はusing、公開セクションに入れないでください。

this->xまた、基本クラスがテンプレートでない限り、派生クラスで使用する必要はありません。

于 2012-07-17T07:45:37.907 に答える
2

愚かな using ディレクティブが継承を変更するのはなぜですか!?

宣言を宣言したためusing(ディレクティブではありません)public。作成するprotectedprivate、一般にアクセス可能にしたくない場合。

私が欲しいのは、常にthis->x中に書かないという素敵な方法Bです...?

通常、あなたの例では、そうする必要はありません。ABが両方ともテンプレートであり、基本クラスが依存している (つまり、派生クラスのテンプレート パラメーターに依存している)場合にのみ、これを行う必要があります。その場合、プライベートでusingは書き込みを避けることができますthis->x

于 2012-07-17T07:56:29.773 に答える