<?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[mehrere gleichartige Objekte erstellen]]></title><description><![CDATA[<p>hi leute!</p>
<p>ich bin ziemlicher c++ neuling, besser gesagt, eigentlich habe ich c++ nie gelernt, sondern wende es nur im Datenanalyse-Framework ROOT (<a href="http://www.root.cern.ch" rel="nofollow">www.root.cern.ch</a>) an. Die meisten Sachen, die ich brauche, konnte ich mir anhand von Beispiel-Makros klarmachen, aber jetzt habe ich ein problem, das ich nirgends finde, weil ich nicht so genau weiß, nach welchen Begriffen ich suchen soll. Ich habe z.B. mal das wikibook zu c++ überflogen, da fand ich auch nichts.</p>
<p>Es geht jedenfalls darum, mehrere gleichartige Objekte zu erstellen. Konkret will ich 8 Files öffnen, die Daten in Arrays lesen und dann grafisch aufbereiten. Dazu muss ich mehrere Objekte erstellen, hier mal der code innerhalb meiner for-Schleife:</p>
<pre><code>...

TString filename = &quot;wic_&quot;;
filename +=i;
filename +=&quot;.tab&quot;;
cout &lt;&lt; filename;

... Daten einlesen ...

TString cname = &quot;c&quot;;
cname += i;
TCanvas *cname = new TCanvas(&quot;c&quot;i, &quot;Canvas&quot;,1); 
cout &lt;&lt; &quot;cname: &quot; &lt;&lt; cname &lt;&lt; endl;

... noch dies und das ...
</code></pre>
<p>Ich weiß nicht, ob das Objekt TString in c++ existiert (das funktioniert in ROOT auf jeden fall, cout gibt jedenfalls die richtigen Dateinamen aus), TCanvas gibt es wohl da nicht. Das ist einfach der Rahmen, in den ROOT Grafiken malt. Davon will ich 8 erstellen. Dass mein Code so nicht funktionieren kann, ist mir klar (gleicher Name für einen String und ein Canvas), aber wie krieg ich das hin? Bei normalen Variablen kann ich einfach ein Array machen, aber bei beliebigen Objekten?</p>
<p>Gruß und danke<br />
wing</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217325/mehrere-gleichartige-objekte-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 05:05:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217325.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Jul 2008 13:17:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mehrere gleichartige Objekte erstellen on Sun, 06 Jul 2008 13:17:40 GMT]]></title><description><![CDATA[<p>hi leute!</p>
<p>ich bin ziemlicher c++ neuling, besser gesagt, eigentlich habe ich c++ nie gelernt, sondern wende es nur im Datenanalyse-Framework ROOT (<a href="http://www.root.cern.ch" rel="nofollow">www.root.cern.ch</a>) an. Die meisten Sachen, die ich brauche, konnte ich mir anhand von Beispiel-Makros klarmachen, aber jetzt habe ich ein problem, das ich nirgends finde, weil ich nicht so genau weiß, nach welchen Begriffen ich suchen soll. Ich habe z.B. mal das wikibook zu c++ überflogen, da fand ich auch nichts.</p>
<p>Es geht jedenfalls darum, mehrere gleichartige Objekte zu erstellen. Konkret will ich 8 Files öffnen, die Daten in Arrays lesen und dann grafisch aufbereiten. Dazu muss ich mehrere Objekte erstellen, hier mal der code innerhalb meiner for-Schleife:</p>
<pre><code>...

TString filename = &quot;wic_&quot;;
filename +=i;
filename +=&quot;.tab&quot;;
cout &lt;&lt; filename;

... Daten einlesen ...

TString cname = &quot;c&quot;;
cname += i;
TCanvas *cname = new TCanvas(&quot;c&quot;i, &quot;Canvas&quot;,1); 
cout &lt;&lt; &quot;cname: &quot; &lt;&lt; cname &lt;&lt; endl;

... noch dies und das ...
</code></pre>
<p>Ich weiß nicht, ob das Objekt TString in c++ existiert (das funktioniert in ROOT auf jeden fall, cout gibt jedenfalls die richtigen Dateinamen aus), TCanvas gibt es wohl da nicht. Das ist einfach der Rahmen, in den ROOT Grafiken malt. Davon will ich 8 erstellen. Dass mein Code so nicht funktionieren kann, ist mir klar (gleicher Name für einen String und ein Canvas), aber wie krieg ich das hin? Bei normalen Variablen kann ich einfach ein Array machen, aber bei beliebigen Objekten?</p>
<p>Gruß und danke<br />
wing</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541876</guid><dc:creator><![CDATA[wing]]></dc:creator><pubDate>Sun, 06 Jul 2008 13:17:40 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere gleichartige Objekte erstellen on Sun, 06 Jul 2008 13:54:54 GMT]]></title><description><![CDATA[<p>Ich kenne dieses ROOT nicht und bin mir nicht ganz sicher, ob ich richtig verstanden habe, was du machen willst, aber was spricht denn dagegen einfach ein Array von Pointern auf die erzeugten Objekte anzulegen?</p>
<p>In etwa:</p>
<pre><code class="language-cpp">TString *cname[8];
TCanvas *canv[8];

...
canv[i] = new TCanvas(...);
cname[i] = new TString(...);
</code></pre>
<p>gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541891</guid><dc:creator><![CDATA[__yoshi]]></dc:creator><pubDate>Sun, 06 Jul 2008 13:54:54 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere gleichartige Objekte erstellen on Sun, 06 Jul 2008 14:35:35 GMT]]></title><description><![CDATA[<p>Hi yoshi! Das Konzept mit den Pointern hatte ich wohl etwas missverstanden, was du vorschlägst funktioniert auf jeden Fall schonmal, danke.</p>
<p>Was noch nicht klappt, ist das Erstellen der Graphen, weil ich nicht weiß, wie ich die Nummerierung da mit reinbringen soll. Mein Code sieht grad so aus:</p>
<pre><code>TCanvas *c[files];
c[i] = new TCanvas(Form(&quot;c%d&quot;,i), Form(&quot;Canvas %d&quot;, i), 1);

TGraph *gr[files];
gr[i] = new TGraph(n, Form(&quot;x%d[n]&quot;,i), Form(&quot;y%d[n]&quot;, i))
</code></pre>
<p>Die Syntax ist</p>
<p>TCanvas(Objektname, Überschrift, Style);<br />
TGraph(Anzahl, x[n], y[n]),</p>
<p>wobei xi[n], yi[n] meine Arrays sind, die ich weiter oben angelegt habe.</p>
<p>Ich fühle mich, als ob mir irgendwas grundlegendes fehlen würde.</p>
<p>Gruß<br />
wing</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541912</guid><dc:creator><![CDATA[wing]]></dc:creator><pubDate>Sun, 06 Jul 2008 14:35:35 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere gleichartige Objekte erstellen on Sun, 06 Jul 2008 14:37:51 GMT]]></title><description><![CDATA[<p>jetzt habe ich das Wesentliche ganz vergessen:<br />
Das erstellen der Canvas' funktioniert, bei den Graphen erhalte ich<br />
&quot;Error: Can't call TGraph::TGraph(n,Form(&quot;x%d[n]&quot;,i),Form(&quot;y%d[n]&quot;,i)) in current scope multifile.C:64:&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541915</guid><dc:creator><![CDATA[wing]]></dc:creator><pubDate>Sun, 06 Jul 2008 14:37:51 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere gleichartige Objekte erstellen on Sun, 06 Jul 2008 16:37:12 GMT]]></title><description><![CDATA[<p>Hallo wing,</p>
<p>der Fehler dürfte daher kommen, dass du an den Konstruktor von TGraph zwei Strings übergibst. Er benötigt jedoch Arrays von Werten (Integer, Float, etc.) oder Vectoren (siehe: <a href="http://root.cern.ch/root/html/TGraph.html" rel="nofollow">http://root.cern.ch/root/html/TGraph.html</a>).</p>
<p>Irgendwo musst du die Werte doch vorher in Arrays gespeichert haben, oder?!<br />
Sowas wie x[100] und y[100] für z.B. 100 X und Y Werte des Graphen.</p>
<p>//Edit: Ja, hast du ja geschrieben, dass du sie angelegt hast... hatte Tomaten auf den Augen <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>Dann würdest du TGraph wie folgt konstruieren:</p>
<pre><code class="language-cpp">gr[i] = new TGraph(100, x, y);
</code></pre>
<p>Alternativ kannst du anscheinend den Graphen auch nur mit der Anzahl an Punkten konstruieren und die Punkte dann später einfügen:</p>
<pre><code class="language-cpp">TGraph* gr[i] = new TGraph(100);
g-&gt;SetPoint(0, -1, -5);
g-&gt;SetPoint(1, -1, +5);
...
g-&gt;Draw(&quot;l same&quot;);
</code></pre>
<p>Hoffe das hilft die weiter.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541962</guid><dc:creator><![CDATA[__yoshi]]></dc:creator><pubDate>Sun, 06 Jul 2008 16:37:12 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere gleichartige Objekte erstellen on Sun, 13 Jul 2008 18:53:41 GMT]]></title><description><![CDATA[<p>hi yoshi!</p>
<p>danke für deine bemühungen, hatte jetzt ein paar tage was anderes zu tun und habe gerade jetzt mein skript überarbeitet. ich habe letztenendes herausgefunden, dass es am einfachsten über zweidimensionale arrays im stil von</p>
<p>x[file][line].</p>
<p>gruß<br />
wing</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546768</guid><dc:creator><![CDATA[wing]]></dc:creator><pubDate>Sun, 13 Jul 2008 18:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to mehrere gleichartige Objekte erstellen on Sun, 13 Jul 2008 19:59:28 GMT]]></title><description><![CDATA[<p>nenne C++ Code nicht Script, ganz böse</p>
<p>schau dir std::vector an</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546801</guid><dc:creator><![CDATA[tipp]]></dc:creator><pubDate>Sun, 13 Jul 2008 19:59:28 GMT</pubDate></item></channel></rss>