0

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

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

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

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 指令会改变继承!?

因为您已经声明了using声明(不是指令)public。制作它,protected或者private如果您不希望它被普遍访问。

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

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

于 2012-07-17T07:56:29.773 回答
2

您是类设计者,您可以公开变量。

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

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

于 2012-07-17T07:45:37.907 回答