<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[boost::any_cast]]></title><description><![CDATA[<p>hallo ich habe gelesen, dass man beim any_cast so vorgehen sollte:</p>
<pre><code class="language-cpp">int i =3;
any a = i;

if(int* p = any_cast&lt;int&gt; (&amp;a)
// ...
</code></pre>
<p>wie gehe ich vor, wenn ich einen zeiger im any habe?</p>
<pre><code class="language-cpp">int* p = new int;
any a = p;
int* k = boost::any_cast&lt;int* &gt;(a);
</code></pre>
<p>ist das genau so gut oder sollte ich dann mit zeigerzeigern arbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/243514/boost-any_cast</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 22:19:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/243514.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Jun 2009 16:56:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost::any_cast on Wed, 17 Jun 2009 16:56:17 GMT]]></title><description><![CDATA[<p>hallo ich habe gelesen, dass man beim any_cast so vorgehen sollte:</p>
<pre><code class="language-cpp">int i =3;
any a = i;

if(int* p = any_cast&lt;int&gt; (&amp;a)
// ...
</code></pre>
<p>wie gehe ich vor, wenn ich einen zeiger im any habe?</p>
<pre><code class="language-cpp">int* p = new int;
any a = p;
int* k = boost::any_cast&lt;int* &gt;(a);
</code></pre>
<p>ist das genau so gut oder sollte ich dann mit zeigerzeigern arbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1728362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728362</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Wed, 17 Jun 2009 16:56:17 GMT</pubDate></item><item><title><![CDATA[Reply to boost::any_cast on Wed, 17 Jun 2009 17:00:21 GMT]]></title><description><![CDATA[<p>was mich nämlich stört ist dass ich fehlermeldungen vom compiler erhalte wenn ichj mit zeigern in any arbeite:</p>
<p>folgendes klappt:</p>
<pre><code class="language-cpp">int i =3;
    container = i;
    if(double* p = boost::any_cast&lt;double&gt; (&amp;container))
        cout &lt;&lt; &quot;gut so&quot;;
    else cout &lt;&lt; &quot;nicht gut&quot;;
</code></pre>
<p>aber wenn ich statt einem wert einen zeiger speichere klappen solche unterscheidungen nicht...</p>
<p>we geht das richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1728365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728365</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Wed, 17 Jun 2009 17:00:21 GMT</pubDate></item><item><title><![CDATA[Reply to boost::any_cast on Wed, 17 Jun 2009 17:32:11 GMT]]></title><description><![CDATA[<p>shisha schrieb:</p>
<blockquote>
<p>hallo ich habe gelesen, dass man beim any_cast so vorgehen sollte:</p>
</blockquote>
<p>Gib mal die Quelle an, wo du diese Empfehlung her hast. Ich empfinde dies als eine äusserst schlechte Empfehlung. Wenn man schon Exceptions hat, dann sollte man doch echt nicht auf C Style Fehlerprüfungen zurückgreifen.</p>
<p>Und falls du mehrere Möglichkeiten hast, was in <code>boost::any</code> gespeichert sein könnte, dann geh über den <code>std::type_info</code> , um herauszufinden, was in <code>boost::any</code> gespeichert ist.</p>
<p>shisha schrieb:</p>
<blockquote>
<p>was mich nämlich stört ist dass ich fehlermeldungen vom compiler erhalte wenn ichj mit zeigern in any arbeite:</p>
<p>[...]</p>
<p>aber wenn ich statt einem wert einen zeiger speichere klappen solche unterscheidungen nicht...</p>
</blockquote>
<p>&quot;Es klappt nicht&quot;<br />
&quot;Es gibt Kompilerfehler&quot;<br />
Wieso gibst du uns nicht genauere Beschreibungen? Wieso gibst du uns nicht die Fehlermeldungen? Alles muss man euch aus der Nase ziehen ...<br />
*holt die grosse Nasenzange*</p>
<p>shisha schrieb:</p>
<blockquote>
<p>we geht das richtig?</p>
</blockquote>
<p>Wahrscheinlich so:</p>
<pre><code class="language-cpp">int* p = 0;
boost::any&lt;int*&gt; anything = p;

int** pp = boost::any_cast&lt;int*&gt;(&amp;anything);

// pp ist ein Zeiger auf einen Zeiger.

if(pp)
{
  p = *pp;
}
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1728388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728388</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 17 Jun 2009 17:32:11 GMT</pubDate></item><item><title><![CDATA[Reply to boost::any_cast on Wed, 17 Jun 2009 21:43:19 GMT]]></title><description><![CDATA[<p>Folgendes geht nicht, was deinem Post entsprechen dürfte:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;boost/any.hpp&gt;

using namespace std;

int main()
{
    boost::any container;

    int* p = new int;
    container = p;
    if(double** k = boost::any_cast&lt;int* &gt;(&amp;container))
        cout &lt;&lt; p &lt;&lt; &quot; &quot; &lt;&lt; k &lt;&lt; endl;
    else cout &lt;&lt; &quot;nicht so gut&quot;;

    return 0;
}
</code></pre>
<p>geht nicht heißt in dem Falle:</p>
<blockquote>
<p>/home/kleopatra/Dokumente/Programmieren/C++/Boost1/main.cpp|14|Fehler: »int**« kann nicht nach »double**« in initialization umgewandelt werden|</p>
</blockquote>
<p>aber du meinst, dass ich ohnehin mit den exceptions arbeiten soll?</p>
<p>nunja:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;boost/any.hpp&gt;

using namespace std;

int main()
{
    boost::any container;

    int* p = new int;
    container = p;
    try
    {
        if(double** k = boost::any_cast&lt;int* &gt;(&amp;container))
            cout &lt;&lt; p &lt;&lt; &quot; &quot; &lt;&lt; k &lt;&lt; endl;
        else cout &lt;&lt; &quot;nicht so gut&quot;;
    }
    catch(boost::bad_any_cast&amp;)
    {
        cout &lt;&lt; &quot; WIRKLICH nicht gut  ...&quot;;
    }

    return 0;
}
</code></pre>
<p>selbe meldung wie oben, wobei ich einige kombinationen ausprobiert habe...</p>
<p>ich möchte hier gerne prüfen können ob der cast möglich ist... aber von meinem Programm... und keine Kompilierfehler - wie müsste ich das richtig schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1728506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728506</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Wed, 17 Jun 2009 21:43:19 GMT</pubDate></item><item><title><![CDATA[Reply to boost::any_cast on Thu, 18 Jun 2009 05:53:47 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>shisha schrieb:</p>
<blockquote>
<p>hallo ich habe gelesen, dass man beim any_cast so vorgehen sollte:</p>
</blockquote>
<p>Gib mal die Quelle an, wo du diese Empfehlung her hast. Ich empfinde dies als eine äusserst schlechte Empfehlung. Wenn man schon Exceptions hat, dann sollte man doch echt nicht auf C Style Fehlerprüfungen zurückgreifen.</p>
</blockquote>
<p>Sehe ich anders. Ein fehlgeschlagener Cast ist bei <code>boost::any</code> mit Sicherheit keine Ausnahme, sondern ein vorhersehbares und nicht selten auftretendes Ereignis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1728542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728542</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 18 Jun 2009 05:53:47 GMT</pubDate></item><item><title><![CDATA[Reply to boost::any_cast on Thu, 18 Jun 2009 21:43:23 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Dravere schrieb:</p>
<blockquote>
<p>shisha schrieb:</p>
<blockquote>
<p>hallo ich habe gelesen, dass man beim any_cast so vorgehen sollte:</p>
</blockquote>
<p>Gib mal die Quelle an, wo du diese Empfehlung her hast. Ich empfinde dies als eine äusserst schlechte Empfehlung. Wenn man schon Exceptions hat, dann sollte man doch echt nicht auf C Style Fehlerprüfungen zurückgreifen.</p>
</blockquote>
<p>Sehe ich anders. Ein fehlgeschlagener Cast ist bei <code>boost::any</code> mit Sicherheit keine Ausnahme, sondern ein vorhersehbares und nicht selten auftretendes Ereignis.</p>
</blockquote>
<p>Genau, es darf gar nicht vorkommen. Wenn es vorkommt, dann ist es eine Exception. Wenn man auf den Typ prüfen will, dann gibt es von boost::any andere Möglichkeiten:<br />
<a href="http://www.boost.org/doc/libs/1_39_0/doc/html/boost/any.html#id800190-bb" rel="nofollow">http://www.boost.org/doc/libs/1_39_0/doc/html/boost/any.html#id800190-bb</a></p>
<p>@shisha,<br />
Lern C++, dann verstehst du die Fehlermeldung selber.<br />
Lies die Boost.Any Dokumentation, dann vertehst du, was du bei der Exceptionversion falsch gemacht hast. Auch hilfreich ist da, wenn man C++ kann.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729141</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 18 Jun 2009 21:43:23 GMT</pubDate></item></channel></rss>