<?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[Container für vtkSmartPointer]]></title><description><![CDATA[<p>Hallo,</p>
<p>Container &amp; Co wurden ja schon mehrfach diskutiert ABER...<br />
Ist es möglich mehrere vtk-Objekte mit vtkSmartPointern zu erzeugen UND<br />
die die Adressen der Objekte dann in einem &quot;Feld&quot; dafür zu hinterlegen, sodass andere Funtionen problemlos darauf zugreifen können???</p>
<p>Also in etwa so...</p>
<pre><code>class Klasse
{
    private:
    vtkSmartPointer&lt;vtkActor&gt; FeldFuerSmartPointerAdressen;

    public:
    Klasse();
    void funktion();
}

Klasse()
{
     FeldFuerSmartPointerAdressen = vtkSmartPointer&lt;vtkActor&gt;::New() [5];
}

void Klasse::funktion()
{
    macht irgendwas...;
    vtkSmartPointer&lt;vtkActor&gt; actor1 = vtkSmartPointer&lt;vtkActor&gt;::New();
    FeldFuerSmartPointerAdressen[0] = actor1;
}
</code></pre>
<p>Über google bin ich auf die Klasse &quot;vtkSmartPointerBase&quot; gestoßen versteh aber nicht wie die eingesetzt werden kann vllt ist das auch am Problem vorbei.<br />
Weiss irgendwer Rat?</p>
<p>Gruß</p>
<p>Ich</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331384/container-für-vtksmartpointer</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 15:51:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331384.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Feb 2015 20:54:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Container für vtkSmartPointer on Wed, 25 Feb 2015 20:54:51 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Container &amp; Co wurden ja schon mehrfach diskutiert ABER...<br />
Ist es möglich mehrere vtk-Objekte mit vtkSmartPointern zu erzeugen UND<br />
die die Adressen der Objekte dann in einem &quot;Feld&quot; dafür zu hinterlegen, sodass andere Funtionen problemlos darauf zugreifen können???</p>
<p>Also in etwa so...</p>
<pre><code>class Klasse
{
    private:
    vtkSmartPointer&lt;vtkActor&gt; FeldFuerSmartPointerAdressen;

    public:
    Klasse();
    void funktion();
}

Klasse()
{
     FeldFuerSmartPointerAdressen = vtkSmartPointer&lt;vtkActor&gt;::New() [5];
}

void Klasse::funktion()
{
    macht irgendwas...;
    vtkSmartPointer&lt;vtkActor&gt; actor1 = vtkSmartPointer&lt;vtkActor&gt;::New();
    FeldFuerSmartPointerAdressen[0] = actor1;
}
</code></pre>
<p>Über google bin ich auf die Klasse &quot;vtkSmartPointerBase&quot; gestoßen versteh aber nicht wie die eingesetzt werden kann vllt ist das auch am Problem vorbei.<br />
Weiss irgendwer Rat?</p>
<p>Gruß</p>
<p>Ich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444363</guid><dc:creator><![CDATA[bleifrei]]></dc:creator><pubDate>Wed, 25 Feb 2015 20:54:51 GMT</pubDate></item><item><title><![CDATA[Reply to Container für vtkSmartPointer on Wed, 25 Feb 2015 21:35:47 GMT]]></title><description><![CDATA[<p>Es geht mir nur darum eine Möglichkeit zu finden vtkObjekte mit einer Funktion durch mehrfachen Aufruf der Funktion zu erzeugen und mit einer anderen Funktion diese nacheinander aufzurufen ohne dass von Beginn an klar ist, wie viele Objekte erzeugt werden.</p>
<p>Das Problem ist anscheinend, dass diese Typen wie vtkActor oder vtkAssembly oder was auch immer komplexer und damit iwie schwerer zu &quot;greifen&quot; sind als die einfachen datentypen wie int, double usw...</p>
<p>hat jemand ne Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444366</guid><dc:creator><![CDATA[bleifrei]]></dc:creator><pubDate>Wed, 25 Feb 2015 21:35:47 GMT</pubDate></item><item><title><![CDATA[Reply to Container für vtkSmartPointer on Wed, 25 Feb 2015 21:53:13 GMT]]></title><description><![CDATA[<p>Ich versteh nicht so ganz, was du sagen willst, und auch nicht, was dein Problem ist. Du redest von Containern. Warum benutzt du dann keine? Warum nicht std::vector&lt;vtkSmartPointer&lt;vtkActor&gt;&gt;? Und was ist jetzt das Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444369</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Wed, 25 Feb 2015 21:53:13 GMT</pubDate></item><item><title><![CDATA[Reply to Container für vtkSmartPointer on Wed, 25 Feb 2015 22:22:48 GMT]]></title><description><![CDATA[<p>Vor allem, was sind vtkObjekte und -SmartPointer?<br />
Bzw. was ist so besonders oder anders an ihnen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444373</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 25 Feb 2015 22:22:48 GMT</pubDate></item><item><title><![CDATA[Reply to Container für vtkSmartPointer on Wed, 25 Feb 2015 22:35:11 GMT]]></title><description><![CDATA[<p><code>std::vector&lt;vtkSmartPointer&lt;vtkObjectBase&gt;&gt;</code><br />
?</p>
<p>Oder auch<br />
<code>std::map&lt;std::string, vtkSmartPointer&lt;vtkObjectBase&gt;&gt;</code><br />
bzw. was auch immer du brauchst damit du so auf die &quot;Objekt-Liste&quot; zugreifen kannst wie es nötig ist.</p>
<p>Bzw. falls alle Objekte die du damit verwalten willst eine &quot;konkretere&quot; gemeinsame Basisklasse als <code>vtkObjectBase</code> haben, solltest du natürlich diese verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444375</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 25 Feb 2015 22:35:11 GMT</pubDate></item><item><title><![CDATA[Reply to Container für vtkSmartPointer on Wed, 25 Feb 2015 23:30:14 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a> &amp; <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28374">@Mechanics</a>: vielen Dank, das funktioniert super! Stand iwei aufm Schlauch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18806">@Skym0sh0</a> ersteres sind Instanzen von zu VTK gehörenden Klassen wie vtkActor und vtkSmartPointer sind Zeiger, die im Gegensatz zum gewöhnlichen Stern-Zeiger selbst merken wenn sie nicht mehr gebraucht werden und dann automatisch den Speicherplatz freigeben (ziemlich praktisch)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444381</guid><dc:creator><![CDATA[bleifrei]]></dc:creator><pubDate>Wed, 25 Feb 2015 23:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to Container für vtkSmartPointer on Fri, 27 Feb 2015 21:17:25 GMT]]></title><description><![CDATA[<p>gerade ergibt sich eine anschlussfrage bei der ich nicht weiterkomme. ich hab folgendes erstellt:</p>
<pre><code>class Klasse
{
...
private:
std::vector&lt;vtkSmartPointer&lt;vtkActor&gt;&gt;* m_actors;
...
}

Klasse::Klasse()
{
...
m_actors = new std::vector&lt;vtkSmartPointer&lt;vtkActor&gt;&gt;;
...
}

Klasse::funktion()
{
vtkSmartPointer&lt;vtkActor&gt; actor = vtkSmartPointer&lt;vtkActor&gt;::New();
actor-&gt;SetMapper(mapper);
actor-&gt;SetUserTransform(transformation);
actor-&gt;SetProperty(properties);

//step6: append the modeled link as actor to the global actor-list
m_actors-&gt;push_back(actor);
}
</code></pre>
<p>Wenn beim Debuggen das Programm mit Haltepunkten durchlaufen wird, dann stellt sich direkt nach dem Hinzufügen des in der Funktion erstellten actors zum Vektor m_actors folgender Fehler ein:</p>
<p><em>((</em>(((<em>(vtkSmartPointerBase</em>)(&amp;(*m_actors)._Myfirst[0x00000000]))).Object)).WeakPointers) CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden</p>
<p>Die Vorschläge zur Problembehebung von Microsoft (<a href="https://msdn.microsoft.com/de-de/library/7cw9d870%28v=vs.100%29.aspx" rel="nofollow">https://msdn.microsoft.com/de-de/library/7cw9d870(v=vs.100).aspx</a>) helfen hier glaub ich nicht weiter, da Typnamen vorhand sind und die Deklaration auch da ist. Habt ihr eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444600</guid><dc:creator><![CDATA[bleifrei]]></dc:creator><pubDate>Fri, 27 Feb 2015 21:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to Container für vtkSmartPointer on Fri, 27 Feb 2015 21:24:37 GMT]]></title><description><![CDATA[<p>Ein Pointer auf einen Vector? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444601</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 27 Feb 2015 21:24:37 GMT</pubDate></item><item><title><![CDATA[Reply to Container für vtkSmartPointer on Fri, 27 Feb 2015 21:32:00 GMT]]></title><description><![CDATA[<p>ja sonst muss doch jedes mal beim übertragen woandershin der ganze vektor überstellt werden anstatt nur der adresse ???? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444602</guid><dc:creator><![CDATA[bleifrei]]></dc:creator><pubDate>Fri, 27 Feb 2015 21:32:00 GMT</pubDate></item><item><title><![CDATA[Reply to Container für vtkSmartPointer on Fri, 27 Feb 2015 21:40:51 GMT]]></title><description><![CDATA[<p>Es kommt aber drauf an.</p>
<p>Wenn deine Klasse, die den Vektor innhat, kopierbar sein soll und auch ihre Daten (die in dem Vektor liegen) verändern können soll, dann ist nur die Adresse kopieren der falsche Weg.</p>
<p>Wenn du umgekehrt teure Kopien nicht haben willst, und auch gar nicht brauchst, dann sorge dafür,d ass nix kopiert wird. Und zwar nicht innerhalb der Klasse sonder ausserhalb. Eben indem du keine Kopien machst.</p>
<p>Und zu guter letzt gibts noch das Moven von Objekten, was öfters auch mal was Speed gibt.</p>
<p>Edit: Mit Zeiger auf Vektor von Zeigern auf Zeiger auf X bist du ganz schnell ein 3- oder sogar 5-Sterne-Programmierer...<br />
Egal, ob die smart sind oder nicht. Die OOP gibt dir dafür Klassen zur Hand, die Funktionalität wegkapseln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444603</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 27 Feb 2015 21:40:51 GMT</pubDate></item><item><title><![CDATA[Reply to Container für vtkSmartPointer on Fri, 27 Feb 2015 22:33:55 GMT]]></title><description><![CDATA[<p>bleifrei schrieb:</p>
<blockquote>
<p>ja sonst muss doch jedes mal beim übertragen woandershin der ganze vektor überstellt werden anstatt nur der adresse ???? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Das ist eben eine solch merkwürdige Idee (und keine legitime Lösung für dein Problem), dass ich davon ausgehen, dass, wer so etwas versucht, es nicht richtig macht. Zumal du ja anscheinend schon einmal von Smartpointern gehört hast, aber hier trotzdem keinen nutzt. Das soll keine Aufforderung sein, das nun mit einem Smartpointer auf einen Vector zu machen, es ist bloß eine Beobachtung, dass du vermutlich auf dem Gebiet manueller Speicherverwaltung nicht so ganz fit bist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444608</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 27 Feb 2015 22:33:55 GMT</pubDate></item></channel></rss>