<?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[non-aggregate type??]]></title><description><![CDATA[<p>Halloechen mal wieder. Bei meinem aktuellen problem hab ich folgende Klasse:</p>
<pre><code class="language-cpp">class TInitUE
{

public: 
  TInitUE(); //Default Constructor;

  // weiterer Constructor, macht nicht viel mehr als der default ctor
  // plus ein paar Aufrufe von add_to_chain()
  TInitUE(const Int_t nDir, 
	  const TString *const dirName, 
	  const TString *const fileNamePrefix, 
	  const Int_t *const nFiles, 
	  const TString *const fileNameSuffix, 
	  const Int_t *const minFileNr = 0);

  ~TInitUE(); // Destructor

  void analyze_chain(TString options, TString targetFile);

  void add_to_chain(TString dirName, TString fileNamePrefix, Int_t nFiles,
		    TString fileNameSuffix, Int_t minFileNr = 1,
		    Int_t nSkips = 0, const Int_t *const skipList = 0);

  // with Skips, without minFNr
  inline void add_to_chain(TString dirName, TString fileNamePrefix, Int_t nFiles,
			   TString fileNameSuffix, 
			   Int_t nSkips, const Int_t *const skipList)
  {add_to_chain(dirName, fileNamePrefix, nFiles, fileNameSuffix, 
		1, nSkips, skipList);};

protected:
  TChain *myChain_;

private:
  inline void init_chain() {myChain_ = new TChain(&quot;h1&quot;);};
};
</code></pre>
<p>Folgende Funktion wird nun einwandfrei compiliert:</p>
<pre><code class="language-cpp">void initmcdir(Int_t doWholeAnalysis = 0)
{
  TInitUE init(mcdir_nDir, mcdir_dirNames, mcdir_filePref, 
	       (doWholeAnalysis==1)?mcdir_nFiles:mcdir_testNF, 
	       mcdir_fileSuf, 
	       mcdir_minFNr); // list 2 starts with fileNo 12
  init.analyze_chain(mcdir_options, mcdir_fileName);
};
</code></pre>
<p>Und folgende nicht:</p>
<pre><code class="language-cpp">void inidmcres(Int_t doWholeAnalysis = 0)
{
  TInitUE init();
  init-&gt;add_to_chain(mcres_dirNames[0], mcres_filePref[0], //line 44
		    (doWholeAnalysis==1)?mcres_nFiles[0]:mcres_testNF[0], 
		    mcres_fileSuf[0]);
  init-&gt;add_to_chain(mcres_dirNames[1], mcres_filePref[1], //line 47
		    (doWholeAnalysis==1)?mcres_nFiles[1]:mcres_testNF[1], 
		    mcres_fileSuf[1], 0, mcres_nSkips2, mcres_skipList2);
};
</code></pre>
<p>Er spuckt mir folgendes aus:</p>
<pre><code>newinit.C:44: error: request for member `
   add_to_chain' in `init', which is of non-aggregate type `TInitUE ()()'
newinit.C:47: error: request for member `
   add_to_chain' in `init', which is of non-aggregate type `TInitUE ()()'
</code></pre>
<p>nach dem was ich rausfinden konnte kommt so eine Fehlermeldung wenn man versucht, ueber pointer mit dem `.'-Operator auf klassenmember zuzugreifen, was aber hier doch nicht der Fall ist. Was also will der compiler von mir?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180936/non-aggregate-type</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 00:37:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180936.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 May 2007 12:29:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to non-aggregate type?? on Tue, 08 May 2007 12:29:34 GMT]]></title><description><![CDATA[<p>Halloechen mal wieder. Bei meinem aktuellen problem hab ich folgende Klasse:</p>
<pre><code class="language-cpp">class TInitUE
{

public: 
  TInitUE(); //Default Constructor;

  // weiterer Constructor, macht nicht viel mehr als der default ctor
  // plus ein paar Aufrufe von add_to_chain()
  TInitUE(const Int_t nDir, 
	  const TString *const dirName, 
	  const TString *const fileNamePrefix, 
	  const Int_t *const nFiles, 
	  const TString *const fileNameSuffix, 
	  const Int_t *const minFileNr = 0);

  ~TInitUE(); // Destructor

  void analyze_chain(TString options, TString targetFile);

  void add_to_chain(TString dirName, TString fileNamePrefix, Int_t nFiles,
		    TString fileNameSuffix, Int_t minFileNr = 1,
		    Int_t nSkips = 0, const Int_t *const skipList = 0);

  // with Skips, without minFNr
  inline void add_to_chain(TString dirName, TString fileNamePrefix, Int_t nFiles,
			   TString fileNameSuffix, 
			   Int_t nSkips, const Int_t *const skipList)
  {add_to_chain(dirName, fileNamePrefix, nFiles, fileNameSuffix, 
		1, nSkips, skipList);};

protected:
  TChain *myChain_;

private:
  inline void init_chain() {myChain_ = new TChain(&quot;h1&quot;);};
};
</code></pre>
<p>Folgende Funktion wird nun einwandfrei compiliert:</p>
<pre><code class="language-cpp">void initmcdir(Int_t doWholeAnalysis = 0)
{
  TInitUE init(mcdir_nDir, mcdir_dirNames, mcdir_filePref, 
	       (doWholeAnalysis==1)?mcdir_nFiles:mcdir_testNF, 
	       mcdir_fileSuf, 
	       mcdir_minFNr); // list 2 starts with fileNo 12
  init.analyze_chain(mcdir_options, mcdir_fileName);
};
</code></pre>
<p>Und folgende nicht:</p>
<pre><code class="language-cpp">void inidmcres(Int_t doWholeAnalysis = 0)
{
  TInitUE init();
  init-&gt;add_to_chain(mcres_dirNames[0], mcres_filePref[0], //line 44
		    (doWholeAnalysis==1)?mcres_nFiles[0]:mcres_testNF[0], 
		    mcres_fileSuf[0]);
  init-&gt;add_to_chain(mcres_dirNames[1], mcres_filePref[1], //line 47
		    (doWholeAnalysis==1)?mcres_nFiles[1]:mcres_testNF[1], 
		    mcres_fileSuf[1], 0, mcres_nSkips2, mcres_skipList2);
};
</code></pre>
<p>Er spuckt mir folgendes aus:</p>
<pre><code>newinit.C:44: error: request for member `
   add_to_chain' in `init', which is of non-aggregate type `TInitUE ()()'
newinit.C:47: error: request for member `
   add_to_chain' in `init', which is of non-aggregate type `TInitUE ()()'
</code></pre>
<p>nach dem was ich rausfinden konnte kommt so eine Fehlermeldung wenn man versucht, ueber pointer mit dem `.'-Operator auf klassenmember zuzugreifen, was aber hier doch nicht der Fall ist. Was also will der compiler von mir?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280859</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 08 May 2007 12:29:34 GMT</pubDate></item><item><title><![CDATA[Reply to non-aggregate type?? on Tue, 08 May 2007 12:31:32 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">TInitUE init();
</code></pre>
<p>Dies hier ist die Deklaration einer Funktion mit dem Namen init und dem Rückgabewert TInitUE. Der Compiler beschwert sich also völlig zurecht, dass Du versuchst eine Methode auf eine Funktion (statt ein Objekt) anzuwenden.</p>
<p>Lösung:<br />
Du musst die Klammern hinten weglassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280861</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 08 May 2007 12:31:32 GMT</pubDate></item><item><title><![CDATA[Reply to non-aggregate type?? on Tue, 08 May 2007 12:33:34 GMT]]></title><description><![CDATA[<p>EDIT: 2L8 !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280863</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 08 May 2007 12:33:34 GMT</pubDate></item><item><title><![CDATA[Reply to non-aggregate type?? on Tue, 08 May 2007 13:10:16 GMT]]></title><description><![CDATA[<p>Autsch danke... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280887</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 08 May 2007 13:10:16 GMT</pubDate></item></channel></rss>