<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: преобразование sometype* в somenmsp::sometype*</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7815.html</link>
    <description>привет всем&lt;br&gt;&lt;br&gt;такая задачка не соображу&lt;br&gt;пишу с++ раппер для libpq (postgres c api)&lt;br&gt;&lt;br&gt;все классы объявляю в namespace db;&lt;br&gt;&lt;br&gt;в header файле postgres объявлен следующий тип&lt;br&gt;&lt;br&gt;typedef pg_conn PGconn;&lt;br&gt;&lt;br&gt;я делаю предварительно объявление этого типа чтобы не шарить его в глобальный namespace&lt;br&gt;&lt;br&gt;// pgengine.h&lt;br&gt;namespace db&#123;&lt;br&gt;&lt;br&gt;struct PGconn;&lt;br&gt;&lt;br&gt;class dbpgengine&#123;&lt;br&gt;public:&lt;br&gt;// tralalya topolya&lt;br&gt;private:&lt;br&gt;PGconn* m_connection;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;// pgengine.cpp&lt;br&gt;using namespace db;&lt;br&gt;&lt;br&gt;dbpgengine::some_func()&#123;&lt;br&gt;m_connection = PGconnectdb(...);&lt;br&gt;//...&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;выдает ошибку&lt;br&gt;&lt;br&gt;не могу преобразовать PGconn* в db::PGconn*&lt;br&gt;&lt;br&gt;как быть?&lt;br&gt;</description>

<item>
    <title>преобразование sometype* в somenmsp::sometype* (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7815.html#9</link>
    <pubDate>Wed, 07 Jan 2009 21:26:51 GMT</pubDate>
    <description>&#091;...&#093;&lt;br&gt;&amp;gt;но задача не сколько в том чтобы получить с++ апи на postgres, &lt;br&gt;&amp;gt;как в том чтобы решить указанную проблему в общем случае &lt;br&gt;&lt;br&gt;http://soci.sourceforge.net/&lt;br&gt;</description>
</item>

<item>
    <title>преобразование sometype* в somenmsp::sometype* (sherzod)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7815.html#8</link>
    <pubDate>Wed, 07 Jan 2009 20:03:55 GMT</pubDate>
    <description>&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Ну тогда вынесите это определение в вашем header-файле вне namespace db: &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Или, как альтернатива, опишите m_connection в вашем классе как void *: &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;спасибо&lt;br&gt;но эти варианты не подходят по следующим причинам&lt;br&gt;1 вариант - описывает идентификатор в глобальном пространстве имен&lt;br&gt;2 вариант создает лишности с приведениями указателей&lt;br&gt;3 есть еще паттерн мост&lt;br&gt;но можно ли без добавления дополнительного слоя классов (то есть лишь языковыми средствами это сделать)?&lt;br&gt;</description>
</item>

<item>
    <title>преобразование sometype* в somenmsp::sometype* (elvenic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7815.html#7</link>
    <pubDate>Wed, 07 Jan 2009 19:23:22 GMT</pubDate>
    <description>&amp;gt;&lt;br&gt;&amp;gt;dbpengine::some_other_func() &lt;br&gt;&amp;gt;&#123; &lt;br&gt;&amp;gt;    // to call postgress api function that requires &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;    // connection pointer: &lt;br&gt;&amp;gt;    PG_some_func(static_cast&amp;lt;PGconn&amp;gt;(m_connection), other, params);    &lt;br&gt;&amp;gt;&#125; &lt;br&gt;&lt;br&gt;Sorry: static_cast&amp;lt;PGconn *&amp;gt;(...) - нужно привести к виду &apos;указатель на PGconn&apos;, а не просто &apos;PGconn&apos;.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>преобразование sometype* в somenmsp::sometype* (elvenic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7815.html#6</link>
    <pubDate>Wed, 07 Jan 2009 19:18:17 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Ну тогда вынесите это определение в вашем header-файле вне namespace db: &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;struct PGconn; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;namespace db &#123; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;   ... &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&#125; &lt;br&gt;&lt;br&gt;Или, как альтернатива, опишите m_connection в вашем классе как void *:&lt;br&gt;&lt;br&gt;namespace db &#123;&lt;br&gt;    class dbpgengine&#123;&lt;br&gt;        public:&lt;br&gt;            // tralalya topolya&lt;br&gt;        private:&lt;br&gt;            void* m_connection;&lt;br&gt;    &#125;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;а в cpp файле:&lt;br&gt;&lt;br&gt;// pgengine.cpp&lt;br&gt;#include &amp;lt;some_postgress_headers.h&amp;gt;&lt;br&gt;&lt;br&gt;using namespace db;&lt;br&gt;&lt;br&gt;dbpgengine::some_func()&#123;&lt;br&gt;    m_connection = PGconnectdb(...);&lt;br&gt;    //...&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;dbpengine::some_other_func()&lt;br&gt;&#123;&lt;br&gt;    // to call postgress api function that requires&lt;br&gt;    // connection pointer:&lt;br&gt;    PG_some_func(static_cast&amp;lt;PGconn&amp;gt;(m_connection), other, params);    &lt;br&gt;&#125;&lt;br&gt;</description>
</item>

<item>
    <title>преобразование sometype* в somenmsp::sometype* (elvenic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7815.html#5</link>
    <pubDate>Wed, 07 Jan 2009 19:10:48 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;А вот этого делать не надо. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;дело в том что я скрываю весь с апи в cpp файле &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;то есть подключаю хедер cодержащий PGconn в cpp файле &lt;br&gt;&amp;gt;поэтому мне необходимо объявить предварительно тип PGconn чтобы обяъвить указатель на него &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;m_connection в описании class dbpgengine; &lt;br&gt;&lt;br&gt;Ну тогда вынесите это определение в вашем header-файле вне namespace db:&lt;br&gt;&lt;br&gt;struct PGconn;&lt;br&gt;&lt;br&gt;namespace db &#123;&lt;br&gt;&lt;br&gt;   ...&lt;br&gt;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>преобразование sometype* в somenmsp::sometype* (sherzod)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7815.html#4</link>
    <pubDate>Wed, 07 Jan 2009 16:54:27 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;typedef pg_conn PGconn; &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;я делаю предварительно объявление этого типа чтобы не шарить его в глобальный &lt;br&gt;&amp;gt;&amp;gt;namespace &lt;br&gt;&amp;gt;&amp;gt;namespace db&#123; &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt; struct PGconn; &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;А вот этого делать не надо. &lt;br&gt;&lt;br&gt;дело в том что я скрываю весь с апи в cpp файле&lt;br&gt;то есть подключаю хедер cодержащий PGconn в cpp файле&lt;br&gt;поэтому мне необходимо объявить предварительно тип PGconn чтобы обяъвить указатель на него &lt;br&gt;m_connection в описании class dbpgengine;&lt;br&gt;</description>
</item>

<item>
    <title>преобразование sometype* в somenmsp::sometype* (elvenic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7815.html#3</link>
    <pubDate>Wed, 07 Jan 2009 16:43:59 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;в header файле postgres объявлен следующий тип &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;typedef pg_conn PGconn; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;я делаю предварительно объявление этого типа чтобы не шарить его в глобальный &lt;br&gt;&amp;gt;namespace &lt;br&gt;&amp;gt;namespace db&#123; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; struct PGconn; &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;А вот этого делать не надо.&lt;br&gt;&lt;br&gt;Имя PGConn уже присутствует в глобальном namespace&apos;е - поскольку так его об&apos;явили в header файле postgres.&lt;br&gt;&lt;br&gt;И более того, в соответствии с об&apos;явлением функции PGconnectdb() в том же header файле postgres, эта функция возвращает значение типа PGconn*, а не db::PGconn*. Именно это и сообщает вам компилятор:&lt;br&gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;выдает ошибку &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; не могу преобразовать PGconn* в db::PGconn* &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;как быть? &lt;br&gt;&lt;br&gt;Не определять struct PGconn в неймспейсе db.&lt;br&gt;&lt;br&gt;Если очень хочется иметь _синоним_ типа struct PGconn в неймспейсе db, можно сказать там typedef:&lt;br&gt;&lt;br&gt;#include &amp;lt;some_postgress_header_file_where_PGconn_is_defined.h&amp;gt;&lt;br&gt;&lt;br&gt;namespace db &#123;&lt;br&gt;&lt;br&gt;    typedef ::PGconn PGconn;&lt;br&gt;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Но это, вообще говоря, нафиг никому не надо.&lt;br&gt;&lt;br&gt;&lt;br&gt;Thank you, &lt;br&gt;&lt;br&gt;    alex.&lt;br&gt;</description>
</item>

<item>
    <title>преобразование sometype* в somenmsp::sometype* (sherzod)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7815.html#2</link>
    <pubDate>Wed, 07 Jan 2009 16:08:58 GMT</pubDate>
    <description>&amp;gt;&amp;gt;привет всем &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;такая задачка не соображу &lt;br&gt;&amp;gt;&amp;gt;пишу с++ раппер для libpq (postgres c api) &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;http://pqxx.tk/ все уже сделано до нас :) &lt;br&gt;&lt;br&gt;за ссылку спасибо)&lt;br&gt;но задача не сколько в том чтобы получить с++ апи на postgres, как в том чтобы решить указанную проблему в общем случае&lt;br&gt;</description>
</item>

<item>
    <title>преобразование sometype* в somenmsp::sometype* (vic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7815.html#1</link>
    <pubDate>Wed, 07 Jan 2009 15:53:05 GMT</pubDate>
    <description>&amp;gt;привет всем &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;такая задачка не соображу &lt;br&gt;&amp;gt;пишу с++ раппер для libpq (postgres c api) &lt;br&gt;&lt;br&gt;http://pqxx.tk/ все уже сделано до нас :)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
