我有以下情况
class base
{
public:
virtual void Accepted(SOCKET s) //// Event
{
}
void Listner()
{
SOCKET acpted;
Accepted(acpted); /// When I call I want derived class's Accepted() to get called
}
};
class derived
{
virtual void Accepted(SOCKET s) //// Event
{
////// HERE i will write actual implementation (QUESTION)
}
}
Run Code Online (Sandbox Code Playgroud)
我想调用派生类的函数.这将像这里的事件一样工作.我想通知派生类在基类中发生的事情.
class derived : public base将derived实际上继承base.然后您的虚函数调用将按预期工作.
请注意,您无法在构造函数或析构函数中进行此类虚函数调用base- 在base调用构造函数时,该derived部件尚不存在.在base调用析构函数时,该derived部件已被破坏.
编辑:演示,回应评论.
class base
{
public:
virtual void Accepted(SOCKET s) //// Event
{
cout << "base::Accepted" << endl;
}
void Listner()
{
SOCKET acpted = 0;
Accepted(acpted); /// When I call I want derived class's Accepted() to get called
}
};
class derived : public base
{
virtual void Accepted(SOCKET s) //// Event
{
cout << "derived::Accepted" << endl;
}
};
int main(int argc, char * argv[])
{
derived d;
d.Listner();
}
Run Code Online (Sandbox Code Playgroud)
这将打印 derived::Accepted