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 herestd::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.