最近在公司的代码里面看到一种多态的形式,本质没有变化,只不过形式变了,以下是大致代码:

template <typename HANDLE, int TYPE = 0>
class CNetHandler : public HANDLE
{
public:
	CNetHandler() { m_pThis = this; }
	~CNetHandler() { m_pThis = NULL; }

	static void TcpCreate(const char* pAddr, unsigned short nPort)
	{
		m_pThis->OnTcpCreated(1);
	}

private:
	static CNetHandler<HANDLE, TYPE>* m_pThis;
};

template <typename HANDLE, int TYPE>
CNetHandler<HANDLE, TYPE>* CNetHandler<HANDLE, TYPE>::m_pThis = NULL;

class CNetEvent
{
protected:
	virtual void OnTcpCreated(int hLink){
		cout << "CNextEvent::OnTcpCreated()" << endl;
	}
};

m_pThis成员通过多态性原理可以访问到模板成员HANDLE中的OnTcpCreated成员

相关文章:

  • 2022-12-23
  • 2021-08-31
  • 2022-01-05
  • 2021-10-10
  • 2021-10-19
  • 2021-09-06
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-12
  • 2021-08-16
  • 2022-01-09
  • 2021-06-19
  • 2022-12-23
  • 2021-08-06
相关资源
相似解决方案