假设我们有以下给定代码:
class T; // with T::~T is virtual
class S;
class E {
void foo() {
/* ... */
S s;
T* t = new T(s);
/* ... */
delete t;
/* ... */
}
};
我们无法改变E
。
现在假设我们有:
class S;
class A {
class T : public ::T {
T(S);
}
};
有什么方法(在 C++03 中!)我们可以强制E
实例化A::T
而不是::T
in E::foo
,而不改变E::foo
or的实现E
?
注意:如果真的有必要,可以E
从我们指定的东西(例如A
)中继承,但我不希望这样做。
一般说明:是的,这闻起来像一个设计缺陷,但我有意识地决定将一小部分集成代码稍微修改一下,以便所有其他(更大!)部分可以漂亮地独立且良好 -设计的。