在派生类中使用指令将继承更改为 Public

Using directive in Derived Class changes inheritance to Public

提问人:Gabriel 提问时间:7/17/2012 最后编辑:Stephane RollandGabriel 更新时间:4/17/2015 访问量:1177

问:

一个非常简单的问题,但令人困惑:

为什么 using 指令会更改继承!? 这与 Comeau 一起编译。

我读过 using 指令(deleration?)使变量公开,但为什么呢? 我想要的只是一个好方法,不要总是写在 B 里面......?this->x

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

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

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

谢谢!

C++ 继承 受保护 using 指令

评论

1赞 Luchian Grigore 7/17/2012
你不必在 B 内写...this->x
0赞 Gabriel 7/18/2012
好的,天哪,我实际上有模板,我可以通过简单地添加正确的“部分”(私有、受保护、公共)(不更改继承)部分 a 来避免使用这个>使用减损......就是这样......

答:

2赞 Bo Persson 7/17/2012 #1

你是类设计者,你可以将变量设为公共。

如果你不想这样,不要把它放在公共部分。using

而且您不必在派生类中使用,除非基类是模板。this->x

2赞 Mike Seymour 7/17/2012 #2

为什么愚蠢的 using 指令会改变继承!?

因为您已经声明了声明(而不是指令)。制作它,或者如果您不希望它通常可访问。usingpublicprotectedprivate

我想要的只是一个好方法,不要总是写在里面......?this->xB

通常,在您的示例中,您不必这样做。只有当 和 都是模板,并且基类是依赖的(即取决于派生类的模板参数)时,才需要这样做。在这种情况下,私人将允许您避免写作。ABusingthis->x


上一个:在新文件中使用指令

下一个:从类继承