【发布时间】:2012-08-10 08:48:14
【问题描述】:
我想创建一个 SharedInterrupt 类(B),它将在一个中断向量中为多个对象提供串行服务。但是 SharedInterrupt 类(B)的派生类(C..)必须具有与 SingleInterrupt 类(A)相同的 ISR()函数(func)。 有可能吗?
class A {
public:
virtual void func() = 0;
};
class B : public A {
private:
void func() // I want to hide this method from derived classes (C, etc.)
{
// some code
}
public:
virtual void func() = 0; // And I want to keep A's interface, but compiler error!
};
class C : public B {
public:
void func() {
// some other code
}
};
附:现在我只有一个想法要隐藏,从 B 创建中间子类来隐藏 A::func() 并从中继承 C。
【问题讨论】:
-
我可能误解了你的问题,但是为什么
B的私有func函数不能与从A 覆盖的函数有不同的名称? -
所有东西都应该命名相同吗?您想要达到的目标令人困惑。
-
内部A的机制调用func()。必须调用 B 的函数。而 B 的 func 必须调用虚拟 C 的 func。 B 的 func 必须是虚拟的,因为 A 有直接继承人。
-
美学家,好吧,也许吧。现在我使用组合而不是继承。但这并不容易。现在 B 包含 A。