【发布时间】:2015-08-06 09:17:35
【问题描述】:
在 C++ 中我能够做到这一点
class App
{
public:
virtual void OnMouseMove(etc);
void FunctionThatDoesStuff();
};
void App::FunctionThatDoesStuff()
{
// Engine stuff here
OnMouseMove(etc);
}
class ProjectName : public App
{
public:
void OnMouseMove(etc);
};
void ProjectName::OnMouseMove(etc)
{
// User stuff here
}
然后,当从 App 中的 FunctionThatDoesStuff 调用 OnMouseMove 时,它将被覆盖并改为调用 ProjectName.OnMouseMove。但在 C# 中,我无法做到这一点。这是我的第一次尝试。
public class App
{
protected void MouseMove()
{
// Engine code here
OnMouseMove(etc);
}
protected virtual void OnMouseMove(etc)
{
// Do Nothing
}
}
public class ProjectName : App
{
protected override void OnMouseMove(etc)
{
// User code here
}
}
我尝试使用委托,因为它们只是未实现的功能。但是这没有用。我怎样才能在 C# 中实现等价物?我想我可以解决它并使用事件。但是有没有更类似的方法来做到这一点。
【问题讨论】:
-
您从
App拨打OnMouseMove并称它正在实施中? could work around it 到底是什么意思? -
@SriramSakthivel 谢谢。我对问题进行了编辑。
-
您是否创建了
App或ProjectName的实例。显示代码你是如何使用它的。
标签: c# c++ oop inheritance virtual