提问人:Gabriel 提问时间:7/17/2012 最后编辑:Stephane RollandGabriel 更新时间:4/17/2015 访问量:1177
在派生类中使用指令将继承更改为 Public
Using directive in Derived Class changes inheritance to Public
问:
一个非常简单的问题,但令人困惑:
为什么 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;
}
谢谢!
答:
2赞
Bo Persson
7/17/2012
#1
你是类设计者,你可以将变量设为公共。
如果你不想这样,不要把它放在公共部分。using
而且您不必在派生类中使用,除非基类是模板。this->x
2赞
Mike Seymour
7/17/2012
#2
为什么愚蠢的 using 指令会改变继承!?
因为您已经声明了声明(而不是指令)。制作它,或者如果您不希望它通常可访问。using
public
protected
private
我想要的只是一个好方法,不要总是写在里面......?
this->x
B
通常,在您的示例中,您不必这样做。只有当 和 都是模板,并且基类是依赖的(即取决于派生类的模板参数)时,才需要这样做。在这种情况下,私人将允许您避免写作。A
B
using
this->x
评论
this->x