Обсуждение: How to create shared_ptr for PGconn?

Поиск
Список
Период
Сортировка

How to create shared_ptr for PGconn?

От
Chengyu Fan
Дата:
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

Re: How to create shared_ptr for PGconn?

От
Dmitry Igrishin
Дата:


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.