<?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[Zugriff auf Arrays als Datenmember einer Klasse]]></title><description><![CDATA[<p>Halloechen, ich habe wie im Titel ein kleines Problem mit dem Zugriff auf Array-Datenmember einer meiner Klassen. Die Klassendefinition lautet wie folgt:</p>
<pre><code class="language-cpp">//template class that stores information about files in N different directories

template&lt;Int_t N&gt; class SampleInfo
{
public:
  inline Int_t nDir() {return N;};
  TString dirNames[N];
  TString fileNamePrefixes[N];
  Int_t nFiles[N];
  TString fileNameSuffixes[N];

  SampleInfo() {for (Int_t i=0; i&lt;N; i++) nFiles[i] = 0;};
  ~SampleInfo() {};
};
</code></pre>
<p>Nun versuche ich eine Instanz der Klasse zu erstellen und die Array member direkt zu setzen:</p>
<pre><code class="language-cpp">SampleInfo&lt;4&gt; data; //N = 4

data.dirNames = 
  {&quot;/files/directory1/&quot;,
   &quot;/files/directory2/&quot;,
   &quot;/files/directory3/&quot;,
   &quot;/files/directory4/&quot;};  //&lt;&lt; Zeile 24
data.fileNamePrefixes = 
  {&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;};
data.nFiles =
  {158, 66, 60, 23};
data.fileNameSuffixes = 
  {&quot;.00p.root&quot;, &quot;.99p.root&quot;, &quot;.99e.root&quot;, &quot;.98e.root&quot;};
</code></pre>
<p>ich kriege folgende Fehlermeldung beim kompilieren:<br />
Syntax Error: data.dirNames= /...../ue/Config_UE.h:24:<br />
Error: Too many '}'</p>
<p>woran mag das liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180576/zugriff-auf-arrays-als-datenmember-einer-klasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 22:48:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180576.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 May 2007 10:22:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 10:22:45 GMT]]></title><description><![CDATA[<p>Halloechen, ich habe wie im Titel ein kleines Problem mit dem Zugriff auf Array-Datenmember einer meiner Klassen. Die Klassendefinition lautet wie folgt:</p>
<pre><code class="language-cpp">//template class that stores information about files in N different directories

template&lt;Int_t N&gt; class SampleInfo
{
public:
  inline Int_t nDir() {return N;};
  TString dirNames[N];
  TString fileNamePrefixes[N];
  Int_t nFiles[N];
  TString fileNameSuffixes[N];

  SampleInfo() {for (Int_t i=0; i&lt;N; i++) nFiles[i] = 0;};
  ~SampleInfo() {};
};
</code></pre>
<p>Nun versuche ich eine Instanz der Klasse zu erstellen und die Array member direkt zu setzen:</p>
<pre><code class="language-cpp">SampleInfo&lt;4&gt; data; //N = 4

data.dirNames = 
  {&quot;/files/directory1/&quot;,
   &quot;/files/directory2/&quot;,
   &quot;/files/directory3/&quot;,
   &quot;/files/directory4/&quot;};  //&lt;&lt; Zeile 24
data.fileNamePrefixes = 
  {&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;};
data.nFiles =
  {158, 66, 60, 23};
data.fileNameSuffixes = 
  {&quot;.00p.root&quot;, &quot;.99p.root&quot;, &quot;.99e.root&quot;, &quot;.98e.root&quot;};
</code></pre>
<p>ich kriege folgende Fehlermeldung beim kompilieren:<br />
Syntax Error: data.dirNames= /...../ue/Config_UE.h:24:<br />
Error: Too many '}'</p>
<p>woran mag das liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278657</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 04 May 2007 10:22:45 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 10:36:51 GMT]]></title><description><![CDATA[<p>Das geht so nicht. Du kannst Array nur so initialisieren, aber nicht zuweisen.</p>
<p>Einen vernünftigen weg gibt es leider noch nicht das in C++ zu machen, der wird aber mit C++0x kommen. So lange kann dir vielleicht <a href="http://boost.org/libs/assign/doc/index.html" rel="nofollow">Boost.Assign</a> weiterhelfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278664</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Fri, 04 May 2007 10:36:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 10:38:26 GMT]]></title><description><![CDATA[<p>C++ Klassen vertragen sich nicht besonders gut mit C's Initialisierungslisten (die ohnehin nur bei einer Variablendefinition eingesetzt werden können und nicht in einer Zuweisung). Das heißt, du müsstest die Array-Elemente wirklich einzeln befüllen (notfalls in einer Schleife aus einem lokalen Array rauskopiert).</p>
<p>Oder du lässt den Ctor der Klasse weg und initialisierst sie komplett über Initialisierungsliste:</p>
<pre><code class="language-cpp">SampleInfo&lt;4&gt; data = {
  {&quot;/files/directory1/&quot;,&quot;/files/directory2/&quot;,&quot;/files/directory3/&quot;,&quot;/files/directory4/&quot;},
  {&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;},
  {158, 66, 60, 23},
  {&quot;.00p.root&quot;, &quot;.99p.root&quot;, &quot;.99e.root&quot;, &quot;.98e.root&quot;}
};
</code></pre>
<p>(das klappt (afaik) allerdings nur, wenn die Klasse keinen selbstgeschriebenen Konstruktor hat)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278665</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 04 May 2007 10:38:26 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 10:40:44 GMT]]></title><description><![CDATA[<p>Hi,<br />
genauso wie du nicht sowas machen kannst:</p>
<pre><code class="language-cpp">int zahlen[3];
  zahlen = { 3,4,6 };
</code></pre>
<p>Kannst du auch nicht dein Vorhaben in die Tat setzen.</p>
<p>Das Problem könntest du lösen in dem du dir ein Array definierst und dann in dein dirname die daten rüberkopierst mit copy.</p>
<p>Oder du benutzt vector&lt;TString&gt; statt TString[x]</p>
<p>Edit: Da man geht zwischendurch kurz in die Küche und landet direkt auf Platz 3. Na immerhin ist CStoll nicht erster ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278666</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 04 May 2007 10:40:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 10:48:08 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Na immerhin ist CStoll nicht erster ...</p>
</blockquote>
<p>Ich trag's mit Fassung <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="😃"
    /> (im Gegensatz zu manch anderem ist es mir egal, der wievielte ich bin ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278672</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 04 May 2007 10:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 10:53:26 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>KasF schrieb:</p>
<blockquote>
<p>Na immerhin ist CStoll nicht erster ...</p>
</blockquote>
<p>Ich trag's mit Fassung <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="😃"
    /> (im Gegensatz zu manch anderem ist es mir egal, der wievielte ich bin ;))</p>
</blockquote>
<p>Das kannst Du auch, weil Du eh fast immer der Erste bist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278676</guid><dc:creator><![CDATA[Paddy82]]></dc:creator><pubDate>Fri, 04 May 2007 10:53:26 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 10:58:54 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>KasF schrieb:</p>
<blockquote>
<p>Na immerhin ist CStoll nicht erster ...</p>
</blockquote>
<p>Ich trag's mit Fassung <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="😃"
    /> (im Gegensatz zu manch anderem ist es mir egal, der wievielte ich bin ;))</p>
</blockquote>
<p>War ja nicht ernst gemeint <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278683</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 04 May 2007 10:58:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 11:06:37 GMT]]></title><description><![CDATA[<p>Paddy82 schrieb:</p>
<blockquote>
<p>Das kannst Du auch, weil Du eh fast immer der Erste bist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Und wenn schon <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="😃"
    /> (manche Leute scheinen sich echt ein Kreuz in den Kalendar zu setzen, wenn sie schneller waren als ich - warum eigentlich? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    />)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278687</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 04 May 2007 11:06:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 11:09:48 GMT]]></title><description><![CDATA[<p>Vielleicht unverschämt und bissl off-topic. Aber wie geht das, dass du immer morgends hier bist und immer jeden sofort antworten kannst. Entweder du hast viel Freizeit in deinen Job oder du bist ein Schüler der nur schwänzt <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>Hat mich immer schonmal irgendwie interessiert ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278690</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 04 May 2007 11:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 11:12:38 GMT]]></title><description><![CDATA[<p>Tja, das würdest du gerne wissen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> (nur so viel: ich bin kein Schüler mehr)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278692</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 04 May 2007 11:12:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 11:13:25 GMT]]></title><description><![CDATA[<p>CStoll ist Hartz 4 Empfenger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278694</guid><dc:creator><![CDATA[....]]></dc:creator><pubDate>Fri, 04 May 2007 11:13:25 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 11:13:34 GMT]]></title><description><![CDATA[<p>CStoll ist bestimmt der Chef <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/1278695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278695</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 04 May 2007 11:13:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 11:19:47 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>CStoll ist bestimmt der Chef <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 wird's sein <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>PS: Könnte vielleicht einer der C++ Mods den Off-Teil herausschneiden und ins NadrW verschieben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278699</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 04 May 2007 11:19:47 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 11:24:12 GMT]]></title><description><![CDATA[<p>Danke erstmal fuer die prompten Antworten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Oder du lässt den Ctor der Klasse weg und initialisierst sie komplett über Initialisierungsliste:</p>
<pre><code class="language-cpp">SampleInfo&lt;4&gt; data = {
  {&quot;/files/directory1/&quot;,&quot;/files/directory2/&quot;,&quot;/files/directory3/&quot;,&quot;/files/directory4/&quot;},
  {&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;},
  {158, 66, 60, 23},
  {&quot;.00p.root&quot;, &quot;.99p.root&quot;, &quot;.99e.root&quot;, &quot;.98e.root&quot;}
};
</code></pre>
<p>(das klappt (afaik) allerdings nur, wenn die Klasse keinen selbstgeschriebenen Konstruktor hat)</p>
</blockquote>
<p>hm. ohne Ctor, also auch ohne Dtor? dann koennte ich gleich n Struct draus machen, oder?</p>
<p>Fahrscheinlinch werd ich am Ende doch die Alternative nehmen und ne &quot;echte&quot; Klasse mit dynamischer Speicherverwaltung machen wo ich dann den Kram a la</p>
<pre><code class="language-cpp">SampleInfo data;

data.add(&quot;/files/directory1/&quot;, &quot;&quot;, 158, &quot;.00p.root&quot;);
data.add(&quot;/files/directory2/&quot;, &quot;&quot;, 66, &quot;.99p.root&quot;);
//etc
</code></pre>
<p>reinhaue. Ist zwar mehr Aufwand beim coden, sieht aber imho sauberer aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278701</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 04 May 2007 11:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 11:29:41 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Danke erstmal fuer die prompten Antworten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Oder du lässt den Ctor der Klasse weg und initialisierst sie komplett über Initialisierungsliste:</p>
<pre><code class="language-cpp">SampleInfo&lt;4&gt; data = {
  {&quot;/files/directory1/&quot;,&quot;/files/directory2/&quot;,&quot;/files/directory3/&quot;,&quot;/files/directory4/&quot;},
  {&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;},
  {158, 66, 60, 23},
  {&quot;.00p.root&quot;, &quot;.99p.root&quot;, &quot;.99e.root&quot;, &quot;.98e.root&quot;}
};
</code></pre>
<p>(das klappt (afaik) allerdings nur, wenn die Klasse keinen selbstgeschriebenen Konstruktor hat)</p>
</blockquote>
<p>hm. ohne Ctor, also auch ohne Dtor? dann koennte ich gleich n Struct draus machen, oder?</p>
</blockquote>
<p>Der Dtor stört in diesem Zusammenhang nicht wirklich. Aber da er in deinem Fall leer ist, kannst du ihn auf jeden Fall weglassen.</p>
<blockquote>
<p>Fahrscheinlinch werd ich am Ende doch die Alternative nehmen und ne &quot;echte&quot; Klasse mit dynamischer Speicherverwaltung machen wo ich dann den Kram a la</p>
<pre><code class="language-cpp">SampleInfo data;

data.add(&quot;/files/directory1/&quot;, &quot;&quot;, 158, &quot;.00p.root&quot;);
data.add(&quot;/files/directory2/&quot;, &quot;&quot;, 66, &quot;.99p.root&quot;);
//etc
</code></pre>
<p>reinhaue. Ist zwar mehr Aufwand beim coden, sieht aber imho sauberer aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Besser ist das <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> (wobei, ich würde eine Hilfsklasse 'entry' für einen Datensatz erstellen und dann die Speicherverwaltung einem vector&lt;entry&gt; überlassen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278707</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 04 May 2007 11:29:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 11:34:04 GMT]]></title><description><![CDATA[<p>Du kannst dir einen Initproxy schreiben.</p>
<pre><code class="language-cpp">template &lt;class T, class I&gt;
class InitProxy
{
public:
	typedef typename T value_type;
	typedef typename I iterator;

	InitProxy(iterator iterator_, int count_) :
		m_Iterator(iterator_),
		m_iCount(count_)
	{}

	~InitProxy()
	{}

	inline InitProxy&lt;T, I&gt;&amp; operator, (value_type const&amp; value_)
	{
		if ( m_iCount == 0 )
			EXCEPTION_THROW(&quot;Zu viele Argumente&quot;);

		--m_iCount;
		++m_Iterator;
		*m_Iterator = value_;

		return *this;
	}
protected:
	iterator m_Iterator;
	int m_iCount;
};
</code></pre>
<p>Dann überlädst du in deiner Arrayzuweisungsklasse den operator=</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class MyVector
{
public:
	typedef T value_type;
	typedef vector&lt;value_type&gt;::iterator iterator;

	MyVector(int size_) ....
  .
  .
  .

	InitProxy&lt;value_type, iterator&gt; operator= (value_type const&amp; value_)
	{
		m_DataArray[0] = value_;
		return InitProxy&lt;value_type, iterator&gt;(m_DataArray.begin(), static_cast&lt;int&gt;(m_DataArray.size()-1));
	}

protected:
	vector&lt;value_type&gt; m_DataArray;
};
</code></pre>
<p>danach kann ein Objekt der Klasse einfach mit Werten gefüllt werden:</p>
<pre><code class="language-cpp">MyVector&lt;int&gt; v(3);

	v = 3, 455, 26;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1278712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278712</guid><dc:creator><![CDATA[xivVerge]]></dc:creator><pubDate>Fri, 04 May 2007 11:34:04 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Fri, 04 May 2007 14:41:56 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>[</p>
<blockquote>
<p>Fahrscheinlinch werd ich am Ende doch die Alternative nehmen und ne &quot;echte&quot; Klasse mit dynamischer Speicherverwaltung machen wo ich dann den Kram a la</p>
<pre><code class="language-cpp">SampleInfo data;

data.add(&quot;/files/directory1/&quot;, &quot;&quot;, 158, &quot;.00p.root&quot;);
data.add(&quot;/files/directory2/&quot;, &quot;&quot;, 66, &quot;.99p.root&quot;);
//etc
</code></pre>
<p>reinhaue. Ist zwar mehr Aufwand beim coden, sieht aber imho sauberer aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Besser ist das <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> (wobei, ich würde eine Hilfsklasse 'entry' für einen Datensatz erstellen und dann die Speicherverwaltung einem vector&lt;entry&gt; überlassen)</p>
</blockquote>
<p>Jein. Natuerlich waere das besser, wenn ich nicht an anderer Stelle Zugriff auf die Arrys der einzelnen Bestandteile eines jeden Eintrags braeuchte (also z.B. diNames aus meinem ersten Beitrag). Dafuer muesste ich sonst jeden entry im vektor auseinanderpfluecken, mir ein neues Array bauen usw.</p>
<p>Ich habs jetzt wie folgt bewaeltigt:</p>
<pre><code class="language-cpp">class TFileSample
{
protected:
  Int_t nDir_;
  TString* dirNames_;
  TString* fPrefixes_;
  TString* fSuffixes_;
  Int_t* nFiles_;
  Int_t* minFNrs_;

public:
  // default Constructor
  TFileSample() 
    : nDir_(0), dirNames_(0), fPrefixes_(0), 
      fSuffixes_(0), nFiles_(0), minFNrs_(0)
  {};
    // destructor
  ~TFileSample()
  { 
    delete[] dirNames_;
    delete[] fPrefixes_;
    delete[] fSuffixes_;
    delete[] nFiles_;
    delete[] minFNrs_;
  };

  void add(TString dirName, TString fPrefix, Int_t nFiles,
	   TString fSuffix, Int_t minFNr = 1)
    {
      //allocate memory for larger arrays
      TString* dnTemp = new TString[nDir_+1]; 
      // [..] and so on
      // copy old arrays into new allocated memory
      for (Int_t i=0; i&lt;nDir_; i++)
        {
          dnTemp[i] = dirNames_[i];
          // [..] and so on
        }
      // append new Data
      dnTemp[nDir_] = dirName;
      // [..] and so on
      //delete old arrays and set pointers to new arrays
      delete[] dirNames_;
      dirNames_ = dnTemp;
      // [..] and so on
      return;
    };

  const TString* getDirNames() const
    {return dirNames_;};
  const TString* getFilePrefixes() const
    {return fPrefixes_;};
  const Int_t* getNFiles() const
    {return nFiles_;};
  const TString* getFileSuffixes() const
    {return fSuffixes_;};
  const Int_t* getMinFNr() const
    {return minFNrs_;};
  Int_t getNDir() const
    {return nDir_;};

};
</code></pre>
<p>Das komische kommt jetzt erst:</p>
<pre><code class="language-cpp">TFileSample mydata;

mydata.add(&quot;/files/directory1/&quot; //line 12
	 ,&quot;&quot;,158,&quot;.00p.root&quot;);
</code></pre>
<p>liefert mir wieder einen Error:<br />
Config_UE.h:12: error: syntax error before `.' token</p>
<p><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="😮"
    /><br />
keinen Plan was das soll... wenn ichs als Zeiger *mydata und mit mydata-&gt;add() mache kommt syntax error before `-&gt;' token <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278849</guid><dc:creator><![CDATA[Pumuckl (offline)]]></dc:creator><pubDate>Fri, 04 May 2007 14:41:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Sat, 05 May 2007 08:28:30 GMT]]></title><description><![CDATA[<p>Pumuckl (offline) schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>[</p>
<blockquote>
<p>Fahrscheinlinch werd ich am Ende doch die Alternative nehmen und ne &quot;echte&quot; Klasse mit dynamischer Speicherverwaltung machen wo ich dann den Kram a la</p>
<pre><code class="language-cpp">SampleInfo data;

data.add(&quot;/files/directory1/&quot;, &quot;&quot;, 158, &quot;.00p.root&quot;);
data.add(&quot;/files/directory2/&quot;, &quot;&quot;, 66, &quot;.99p.root&quot;);
//etc
</code></pre>
<p>reinhaue. Ist zwar mehr Aufwand beim coden, sieht aber imho sauberer aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Besser ist das <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> (wobei, ich würde eine Hilfsklasse 'entry' für einen Datensatz erstellen und dann die Speicherverwaltung einem vector&lt;entry&gt; überlassen)</p>
</blockquote>
<p>Jein. Natuerlich waere das besser, wenn ich nicht an anderer Stelle Zugriff auf die Arrys der einzelnen Bestandteile eines jeden Eintrags braeuchte (also z.B. diNames aus meinem ersten Beitrag). Dafuer muesste ich sonst jeden entry im vektor auseinanderpfluecken, mir ein neues Array bauen usw.</p>
</blockquote>
<p>OK, das ist ein Argument, das ich nachvollziehen kann (obwohl ich mir auch vorstellen könnte, zur Lösung die &quot;andere Stelle&quot; so umzubauen, daß sie selber aus einem vector&lt;entry&gt; die richtigen Teile raussucht). Aber dann nimm wenigstens vector&lt;&gt;en zur Verwaltung deiner Einzelarrays - damit ersparst du dir eine Menge Arbeit (und vector::push_back() ist auch wesentlich effizienter als dein Lösungsansatz ;)).</p>
<blockquote>
<p>Das komische kommt jetzt erst:</p>
<pre><code class="language-cpp">TFileSample mydata;

mydata.add(&quot;/files/directory1/&quot; //line 12
	 ,&quot;&quot;,158,&quot;.00p.root&quot;);
</code></pre>
<p>liefert mir wieder einen Error:<br />
Config_UE.h:12: error: syntax error before `.' token</p>
</blockquote>
<p>Ich hoffe mal, das da steht im inneren einer Funktion. &quot;mydata.add(...);&quot; ist eine Anweisung - und die darf nicht frei im Raum schweben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279151</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 05 May 2007 08:28:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Arrays als Datenmember einer Klasse on Mon, 07 May 2007 14:21:56 GMT]]></title><description><![CDATA[<p>Leider kann ich an der &quot;anderen Stelle&quot; nicht viel rumfuhrwerken. Da hat jemand anderes die Verantwortung und der hat leider mehr mit Teilchenphysik als mit Objektorientiertem C++ am Hut. Sprich: ich bin gezwungen, ihm völlig oldscool einen Zeiger auf den Anfang und einen int mit der Länge des Arrays zu übergeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280352</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 07 May 2007 14:21:56 GMT</pubDate></item></channel></rss>