【发布时间】:2014-02-02 20:14:58
【问题描述】:
我有这个无法更改的代码:
啊.h
class B;
class A
{
A();
void * getB();
private:
B * b;
}
A.cxx
namespace
{
class B : public QTabWidget
{
foo()
{
...
}
bar()
{
...
}
}
}
A::A()
{
b = new B();
}
A::getB()
{
return b;
}
我想在继承 A 的类中访问 b 及其方法(foo 或 bar 或继承的方法)。 我可以这样做吗?
C.h
class C : public A
{
C();
private:
D * d;
}
C.cxx
namespace
{
class D : public QTabWidget //Exact copy of class B
{
foo()
{
...
}
bar()
{
...
}
}
}
C::C()
{
d = (D*) getB();
d.foo()
d.bar()
}
安全吗?是否允许?我已经尝试过了,它似乎有效。 如果它是安全的,我可以用更多的静态方法,或方法,甚至属性来扩展 D 吗?
【问题讨论】:
-
从编译器的角度来看,这将起作用,因为它是
D类型的简单副本。但是,从设计的角度来看,我不知道是否允许。
标签: c++ inheritance redefinition