Обсуждение: How to create shared_ptr for PGconn?
Hi,
Does anyone know how to create the shared_ptr for PGconn? I always get compile errors ...
Below is my code:
-----------------------
const char * dbInfo = "xxx";
PGconn *conn = PGconnectdb(dbInfo);
if (PGstatus(conn) != CONNECTION_OK) {
std::cout << PQerrorMessage(conn) << std::endl;
return 1;
}
std::shared_ptr<PGconn> pConn(conn);
-----------
Error messages for the code above:
main.cpp:153:27: note: in instantiation of function template specialization 'std::__1::shared_ptr<pg_conn>::shared_ptr<pg_conn, void>' requested here
std::shared_ptr<PGconn> pConn(rawConn);
/usr/local/Cellar/postgresql/9.4.1/include/libpq-fe.h:129:16: note: forward declaration of 'pg_conn'
typedef struct pg_conn PGconn;
Thanks,
Chengyu
2015-03-16 19:32 GMT+03:00 Chengyu Fan <chengyu.fan@hotmail.com>:
Hi,Does anyone know how to create the shared_ptr for PGconn? I always get compile errors ...Below is my code:-----------------------const char * dbInfo = "xxx";PGconn *conn = PGconnectdb(dbInfo);if (PGstatus(conn) != CONNECTION_OK) {std::cout << PQerrorMessage(conn) << std::endl;return 1;}std::shared_ptr<PGconn> pConn(conn);-----------Error messages for the code above:main.cpp:153:27: note: in instantiation of function template specialization 'std::__1::shared_ptr<pg_conn>::shared_ptr<pg_conn, void>' requested here
std::shared_ptr<PGconn> pConn(rawConn);
/usr/local/Cellar/postgresql/9.4.1/include/libpq-fe.h:129:16: note: forward declaration of 'pg_conn'
typedef struct pg_conn PGconn;
The complete example below:
#include <memory>
#include <libpq-fe.h>
int main(int argc, char *argv[])
{
PGconn* cn = PQconnectdb("");
std::shared_ptr<PGconn> shared_cn(cn, &PQfinish);
return 0;
}
// Dmitry.