gpt4 book ai didi

C++ 想从基类调用派生函数

转载 作者:太空宇宙 更新时间:2023-11-04 15:52:37 25 4
gpt4 key购买 nike

我有以下情况

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)
}

}

我想调用派生类的函数。这将像这里的事件一样工作。我想通知派生类基类发生了一些事情。

最佳答案

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();
}

这将打印derived::Accepted

关于C++ 想从基类调用派生函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5498515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com