ラッパーが破棄されたときにプールに戻す接続ポインターの周りに単純なラッパーを書き込もうとしていますが、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);
}
};