Я пытаюсь написать простую оболочку вокруг указателя соединения, которая вернет его в пул, когда оболочка будет уничтожена, но она не будет компилироваться, потому что ConnectionPool и AutoConn нуждаются в объявлении друг друга.
Я попытался использовать замедление вперед, но это не сработало. Как мне решить эту проблему? (используя g ++)
class Connection {};
class ConnectionPool
{
Connection *m_c;
public:
AutoConn getConn()
{
return AutoConn(this, m_c); // by value
}
void releaseConnection(Connection *c)
{
}
};
class AutoConn
{
ConnectionPool* m_pool;
Connection *m_connection;
public:
AutoConn(ConnectionPool* pool, Connection *c) : m_pool(pool), m_connection(c) {}
~AutoConn()
{
m_pool->releaseConnection(m_connection);
}
};