<?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[Re: C++ und D - übergabe von Array]]></title><description><![CDATA[<p>Hi zusammen,<br />
hat von euch auch schon einmal in D programmiert?<br />
Ich weiss dass ich hierfür im falschen Forum bin, aber bisher konnte man mir nicht weiterhelfen. Vieleicht kennt der eine oder andere ja D bzw. kann meine Frage einfach so beantworten.</p>
<p>Bin gerade dabei ein C++ Programm von mir in ein D Programm einzubinden.<br />
Das ganze realisiere ich mit einem Wrapper.</p>
<p>Das klappt bisher alles, ich stosse jedoch auf ein Problem:<br />
Eine Methode meines C++ Programms gibt einen std::vector&lt;double&gt; zurück.<br />
Diesen Rückgabevector muss ich nun irgendwie in einen Datentyp in D umwandeln.</p>
<p>Ich habe in meiner C++ Methode aus dem std::vector schon einen double[] erzeugt, da ich dachte diesen übergeben zu können, komme hier aber nicht mehr weiter.</p>
<p>Mein C++ Code - Wrapper.cpp:</p>
<pre><code class="language-cpp">// TODO: convert from C++ array to D Array
int getSignalcluster(int val) {
   if(val &gt;= getNumberOfSignalclusters(val)){
      std::cerr&lt;&lt; &quot;Wrapper.cpp: void getSignalcluster(int val) - val is greater than size of&quot;
            &quot;Clusterlist&quot; &lt;&lt; std::endl;
      throw &quot;Exception&quot;;
   }
        // unwichtig, hier hole ich mir einfach nur den vector
   std::vector&lt;int&gt; actualSignals = (*pri_ptr).getSignalcluster(val);

   int actualSignals_ary[actualSignals.size()];

   for(int i = 0; i &lt; actualSignals.size(); i++){
      actualSignals_ary[i] = actualSignals[i];
   }

   ////--&gt; diesen möchte ich zurück geben: actualSignals_ary;
   return ???;
}
</code></pre>
<p>Meine main.d:</p>
<pre><code class="language-cpp">module main;
    import std.stdio;
    // returns the id's of the signals from cluster
        extern (C++) int getSignalcluster(int);

    int main()
        {
         ...            

       getSignalcluster(i);                     

              return 0 ;
        }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/234554/re-c-und-d-übergabe-von-array</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 10:26:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234554.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Feb 2009 10:48:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Re: C++ und D - übergabe von Array on Thu, 19 Feb 2009 10:48:26 GMT]]></title><description><![CDATA[<p>Hi zusammen,<br />
hat von euch auch schon einmal in D programmiert?<br />
Ich weiss dass ich hierfür im falschen Forum bin, aber bisher konnte man mir nicht weiterhelfen. Vieleicht kennt der eine oder andere ja D bzw. kann meine Frage einfach so beantworten.</p>
<p>Bin gerade dabei ein C++ Programm von mir in ein D Programm einzubinden.<br />
Das ganze realisiere ich mit einem Wrapper.</p>
<p>Das klappt bisher alles, ich stosse jedoch auf ein Problem:<br />
Eine Methode meines C++ Programms gibt einen std::vector&lt;double&gt; zurück.<br />
Diesen Rückgabevector muss ich nun irgendwie in einen Datentyp in D umwandeln.</p>
<p>Ich habe in meiner C++ Methode aus dem std::vector schon einen double[] erzeugt, da ich dachte diesen übergeben zu können, komme hier aber nicht mehr weiter.</p>
<p>Mein C++ Code - Wrapper.cpp:</p>
<pre><code class="language-cpp">// TODO: convert from C++ array to D Array
int getSignalcluster(int val) {
   if(val &gt;= getNumberOfSignalclusters(val)){
      std::cerr&lt;&lt; &quot;Wrapper.cpp: void getSignalcluster(int val) - val is greater than size of&quot;
            &quot;Clusterlist&quot; &lt;&lt; std::endl;
      throw &quot;Exception&quot;;
   }
        // unwichtig, hier hole ich mir einfach nur den vector
   std::vector&lt;int&gt; actualSignals = (*pri_ptr).getSignalcluster(val);

   int actualSignals_ary[actualSignals.size()];

   for(int i = 0; i &lt; actualSignals.size(); i++){
      actualSignals_ary[i] = actualSignals[i];
   }

   ////--&gt; diesen möchte ich zurück geben: actualSignals_ary;
   return ???;
}
</code></pre>
<p>Meine main.d:</p>
<pre><code class="language-cpp">module main;
    import std.stdio;
    // returns the id's of the signals from cluster
        extern (C++) int getSignalcluster(int);

    int main()
        {
         ...            

       getSignalcluster(i);                     

              return 0 ;
        }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1666278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666278</guid><dc:creator><![CDATA[redbomber]]></dc:creator><pubDate>Thu, 19 Feb 2009 10:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to Re: C++ und D - übergabe von Array on Thu, 19 Feb 2009 10:54:13 GMT]]></title><description><![CDATA[<p>Schreib das besser nach &quot;Rund um die Programmierung&quot;, da laufen ab und an einmal ein paar D-Spinner herum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666282</guid><dc:creator><![CDATA[D-Progger]]></dc:creator><pubDate>Thu, 19 Feb 2009 10:54:13 GMT</pubDate></item><item><title><![CDATA[Reply to Re: C++ und D - übergabe von Array on Thu, 19 Feb 2009 12:42:00 GMT]]></title><description><![CDATA[<p>Vielleicht mal <a href="http://www.digitalmars.com/d/2.0/cpp_interface.html" rel="nofollow">hier</a> gucken.<br />
Oder Du schreibst ein C-Interface-Wrapper (meist ist das besser) und guckst dann <a href="http://www.digitalmars.com/d/2.0/interfaceToC.html" rel="nofollow">hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666371</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 19 Feb 2009 12:42:00 GMT</pubDate></item></channel></rss>