<?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[Von Template ableiten]]></title><description><![CDATA[<p>Ich habe zweierlei Klassen, beide Templates, wobei die zweite von der ersten abgeleitet ist:</p>
<pre><code class="language-cpp">#ifndef TREENODEBASE_H
#define TREENODEBASE_H

#include &quot;array.h&quot;

template&lt;class T&gt;
class TreeNodeBase
{
	public:
		TreeNodeBase(const TreeNodeBase&lt;T&gt; * const parent);
		virtual ~TreeNodeBase();

	public:
		virtual void appendLeave(const T &amp;object);
		virtual Array&lt;T&gt; getAllLeaves() const;
		virtual const Array&lt;T&gt;&amp; getAllDirectLeaves() const;
		virtual bool containsLeave(const T &amp;object) const;

	protected:
		Array&lt;TreeNodeBase&lt;T&gt;*&gt; m_nodes;
		Array&lt;T&gt; m_leaves;
		const TreeNodeBase&lt;T&gt; * const m_parent;
};

#include &quot;treenodebase.cpp&quot;

#endif
</code></pre>
<pre><code class="language-cpp">#ifndef TREENAMEDNODE_H
#define TREENAMEDNODE_H

#include &quot;beenstring.h&quot;
#include &quot;treenodebase.h&quot;

template&lt;class T&gt;
class TreeNamedNode :
		public TreeNodeBase&lt;T&gt;
{
	public:
		TreeNamedNode();
		TreeNamedNode(const TreeNodeBase&lt;T&gt; * const parent, const String &amp;name);

		virtual TreeNamedNode&lt;T&gt; * const appendNode(const String &amp;name);
		virtual SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt; getNode(const String &amp;name);
		const String&amp; getName() const;
		Array&lt;String&gt; getAllNamesOfDirectNodes() const;
		bool isTagAlreadyDirectChild(const String &amp;name) const;

	protected:
		virtual TreeNamedNode&lt;T&gt; * createSubNode(const String &amp;name) const;

	private:
		String m_name;
};

#include &quot;treenamednode.cpp&quot;

#endif
</code></pre>
<p>Ich bekomme dabei immer folgende Meldung vom Compiler (gcc 4.5.3):</p>
<pre><code>../../../base/containers/include/treenamednode.h:9:22: error: expected template-name before '&lt;' token
../../../base/containers/include/treenamednode.h:9:22: error: expected '{' before '&lt;' token
../../../base/containers/include/treenamednode.h:9:22: error: expected unqualified-id before '&lt;' token
</code></pre>
<p>Wenn ich, testweise, den Code wie folgend ändere, dann kompiiliert es soweit, als später die halbe Funktionen der Basisklasse fehlen. Aber das ursprüngliche Problem stellt sich nicht mehr:</p>
<pre><code>#ifndef TREENAMEDNODE_H
#define TREENAMEDNODE_H

#include &quot;beenstring.h&quot;
//#include &quot;treenodebase.h&quot;

template&lt;class T&gt;
class TreeNodeBase
{ };

template&lt;class T&gt;
class TreeNamedNode :
		public TreeNodeBase&lt;T&gt;
{
	public:
		TreeNamedNode();
		TreeNamedNode(const TreeNodeBase&lt;T&gt; * const parent, const String &amp;name);

		virtual TreeNamedNode&lt;T&gt; * const appendNode(const String &amp;name);
		virtual SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt; getNode(const String &amp;name);
		const String&amp; getName() const;
		Array&lt;String&gt; getAllNamesOfDirectNodes() const;
		bool isTagAlreadyDirectChild(const String &amp;name) const;

	protected:
		virtual TreeNamedNode&lt;T&gt; * createSubNode(const String &amp;name) const;

	private:
		String m_name;
};

#include &quot;treenamednode.cpp&quot;

#endif
</code></pre>
<p>Falls es hilft kommen hier noch die Implementierungen:</p>
<pre><code class="language-cpp">#include &quot;treenodebase.h&quot;

template&lt;class T&gt;
TreeNodeBase&lt;T&gt;::TreeNodeBase(const TreeNodeBase&lt;T&gt; *const parent) :
		m_parent(parent)
{ }

template&lt;class T&gt;
TreeNodeBase&lt;T&gt;::~TreeNodeBase()
{
	for (ConstIterator&lt;TreeNodeBase&lt;T&gt;*&gt; iterator(m_nodes.getConstIterator()); iterator.isValid(); iterator.increment())
		delete *iterator;
}

template&lt;class T&gt;
void TreeNodeBase&lt;T&gt;::appendLeave(const T &amp;object)
{
	m_leaves.append(object);
}

template&lt;class T&gt;
Array&lt;T&gt; TreeNodeBase&lt;T&gt;::getAllLeaves() const
{
	Array&lt;T&gt; leaves;

	for (ConstIterator&lt;T&gt; iterator(m_leaves.getConstIterator()); iterator.isValid(); iterator.increment())
		leaves.append(*iterator);

	for (ConstIterator&lt;TreeNodeBase&lt;T&gt;*&gt; iterator(m_nodes.getConstIterator()); iterator.isValid(); iterator.increment())
		leaves.append((*iterator)-&gt;getAllLeaves());

	return leaves;
}

template&lt;class T&gt;
const Array&lt;T&gt;&amp; TreeNodeBase&lt;T&gt;::getAllDirectLeaves() const
{
	return m_leaves;
}

template&lt;class T&gt;
bool TreeNodeBase&lt;T&gt;::containsLeave(const T &amp;object) const
{
	if (m_leaves.contains(object))
		return true;

	for (ConstIterator&lt;TreeNodeBase&lt;T&gt;*&gt; iterator(m_nodes.getConstIterator()); iterator.isValid(); iterator.increment())
		if ((*iterator)-&gt;containsLeave(object))
			return true;

	return false;
}
</code></pre>
<pre><code class="language-cpp">#include &quot;treenamednode.h&quot;

template&lt;class T&gt;
TreeNamedNode&lt;T&gt;::TreeNamedNode() :
    TreeNodeBase&lt;T&gt;(0)
{ }

template&lt;class T&gt;
TreeNamedNode&lt;T&gt;::TreeNamedNode(const TreeNodeBase&lt;T&gt; *const parent, const String &amp;name) :
	TreeNodeBase&lt;T&gt;(parent),
	m_name(name)
{ }

template&lt;class T&gt;
TreeNamedNode&lt;T&gt;* const TreeNamedNode&lt;T&gt;::appendNode(const String &amp;name)
{
	TreeNamedNode&lt;T&gt;* node = createSubNode(name);

	TreeNodeBase&lt;T&gt;::m_nodes.append(node);

	return node;
}

template&lt;class T&gt;
TreeNamedNode&lt;T&gt;* TreeNamedNode&lt;T&gt;::createSubNode(const String &amp;name) const
{
	return new TreeNamedNode&lt;T&gt;(this, name);
}

template&lt;class T&gt;
SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt; TreeNamedNode&lt;T&gt;::getNode(const String &amp;name) 
{
	if (m_name == name)
		return this;

	SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt; result;

	for (Iterator&lt;TreeNodeBase&lt;T&gt;*&gt; iterator(TreeNodeBase&lt;T&gt;::m_nodes.getIterator()); iterator.isValid(); iterator.increment())
	{
		TreeNamedNode&lt;T&gt; *node = dynamic_cast&lt;TreeNamedNode&lt;T&gt;*&gt;(*iterator);

		result = node-&gt;getNode(name);

		if (!result.hasFailed())
			return result;
	}

	return SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt;();
}

template&lt;class T&gt;
const String&amp; TreeNamedNode&lt;T&gt;::getName() const
{
	return m_name;
}

template&lt;class T&gt;
Array&lt;String&gt; TreeNamedNode&lt;T&gt;::getAllNamesOfDirectNodes() const
{
	Array&lt;String&gt; names;

	for (ConstIterator&lt;TreeNodeBase&lt;T&gt;*&gt; i(TreeNodeBase&lt;T&gt;::m_nodes.getConstIterator()); i.isValid(); i.increment())
	{
		TreeNamedNode&lt;T&gt; *node = dynamic_cast&lt;TreeNamedNode&lt;T&gt;*&gt;(*i);

		assert(node != 0);

		names.append(node-&gt;getName());
	}

	return names;
}

template&lt;class T&gt;
bool TreeNamedNode&lt;T&gt;::isTagAlreadyDirectChild(const String &amp;name) const
{
	for (ConstIterator&lt;TreeNodeBase&lt;T&gt;*&gt; i(TreeNodeBase&lt;T&gt;::m_nodes.getConstIterator()); i.isValid(); i.increment())
	{
		TreeNamedNode&lt;T&gt; *node = dynamic_cast&lt;TreeNamedNode&lt;T&gt;*&gt;(*i);

		assert(node != 0);

		if (name == node-&gt;getName())
			return true;
	}

	return false;
}
</code></pre>
<p>Wäre toll, wenn da jemand weiter wüsste. Ich stehe wohl ziemlich auf dem Schlauch.</p>
<p>mfg benediktibk</p>
<p>PS: Gibts Spoiler? Wurde irgendwie recht lange ...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/299030/von-template-ableiten</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 12:44:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/299030.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Feb 2012 07:18:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Von Template ableiten on Wed, 01 Feb 2012 07:18:49 GMT]]></title><description><![CDATA[<p>Ich habe zweierlei Klassen, beide Templates, wobei die zweite von der ersten abgeleitet ist:</p>
<pre><code class="language-cpp">#ifndef TREENODEBASE_H
#define TREENODEBASE_H

#include &quot;array.h&quot;

template&lt;class T&gt;
class TreeNodeBase
{
	public:
		TreeNodeBase(const TreeNodeBase&lt;T&gt; * const parent);
		virtual ~TreeNodeBase();

	public:
		virtual void appendLeave(const T &amp;object);
		virtual Array&lt;T&gt; getAllLeaves() const;
		virtual const Array&lt;T&gt;&amp; getAllDirectLeaves() const;
		virtual bool containsLeave(const T &amp;object) const;

	protected:
		Array&lt;TreeNodeBase&lt;T&gt;*&gt; m_nodes;
		Array&lt;T&gt; m_leaves;
		const TreeNodeBase&lt;T&gt; * const m_parent;
};

#include &quot;treenodebase.cpp&quot;

#endif
</code></pre>
<pre><code class="language-cpp">#ifndef TREENAMEDNODE_H
#define TREENAMEDNODE_H

#include &quot;beenstring.h&quot;
#include &quot;treenodebase.h&quot;

template&lt;class T&gt;
class TreeNamedNode :
		public TreeNodeBase&lt;T&gt;
{
	public:
		TreeNamedNode();
		TreeNamedNode(const TreeNodeBase&lt;T&gt; * const parent, const String &amp;name);

		virtual TreeNamedNode&lt;T&gt; * const appendNode(const String &amp;name);
		virtual SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt; getNode(const String &amp;name);
		const String&amp; getName() const;
		Array&lt;String&gt; getAllNamesOfDirectNodes() const;
		bool isTagAlreadyDirectChild(const String &amp;name) const;

	protected:
		virtual TreeNamedNode&lt;T&gt; * createSubNode(const String &amp;name) const;

	private:
		String m_name;
};

#include &quot;treenamednode.cpp&quot;

#endif
</code></pre>
<p>Ich bekomme dabei immer folgende Meldung vom Compiler (gcc 4.5.3):</p>
<pre><code>../../../base/containers/include/treenamednode.h:9:22: error: expected template-name before '&lt;' token
../../../base/containers/include/treenamednode.h:9:22: error: expected '{' before '&lt;' token
../../../base/containers/include/treenamednode.h:9:22: error: expected unqualified-id before '&lt;' token
</code></pre>
<p>Wenn ich, testweise, den Code wie folgend ändere, dann kompiiliert es soweit, als später die halbe Funktionen der Basisklasse fehlen. Aber das ursprüngliche Problem stellt sich nicht mehr:</p>
<pre><code>#ifndef TREENAMEDNODE_H
#define TREENAMEDNODE_H

#include &quot;beenstring.h&quot;
//#include &quot;treenodebase.h&quot;

template&lt;class T&gt;
class TreeNodeBase
{ };

template&lt;class T&gt;
class TreeNamedNode :
		public TreeNodeBase&lt;T&gt;
{
	public:
		TreeNamedNode();
		TreeNamedNode(const TreeNodeBase&lt;T&gt; * const parent, const String &amp;name);

		virtual TreeNamedNode&lt;T&gt; * const appendNode(const String &amp;name);
		virtual SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt; getNode(const String &amp;name);
		const String&amp; getName() const;
		Array&lt;String&gt; getAllNamesOfDirectNodes() const;
		bool isTagAlreadyDirectChild(const String &amp;name) const;

	protected:
		virtual TreeNamedNode&lt;T&gt; * createSubNode(const String &amp;name) const;

	private:
		String m_name;
};

#include &quot;treenamednode.cpp&quot;

#endif
</code></pre>
<p>Falls es hilft kommen hier noch die Implementierungen:</p>
<pre><code class="language-cpp">#include &quot;treenodebase.h&quot;

template&lt;class T&gt;
TreeNodeBase&lt;T&gt;::TreeNodeBase(const TreeNodeBase&lt;T&gt; *const parent) :
		m_parent(parent)
{ }

template&lt;class T&gt;
TreeNodeBase&lt;T&gt;::~TreeNodeBase()
{
	for (ConstIterator&lt;TreeNodeBase&lt;T&gt;*&gt; iterator(m_nodes.getConstIterator()); iterator.isValid(); iterator.increment())
		delete *iterator;
}

template&lt;class T&gt;
void TreeNodeBase&lt;T&gt;::appendLeave(const T &amp;object)
{
	m_leaves.append(object);
}

template&lt;class T&gt;
Array&lt;T&gt; TreeNodeBase&lt;T&gt;::getAllLeaves() const
{
	Array&lt;T&gt; leaves;

	for (ConstIterator&lt;T&gt; iterator(m_leaves.getConstIterator()); iterator.isValid(); iterator.increment())
		leaves.append(*iterator);

	for (ConstIterator&lt;TreeNodeBase&lt;T&gt;*&gt; iterator(m_nodes.getConstIterator()); iterator.isValid(); iterator.increment())
		leaves.append((*iterator)-&gt;getAllLeaves());

	return leaves;
}

template&lt;class T&gt;
const Array&lt;T&gt;&amp; TreeNodeBase&lt;T&gt;::getAllDirectLeaves() const
{
	return m_leaves;
}

template&lt;class T&gt;
bool TreeNodeBase&lt;T&gt;::containsLeave(const T &amp;object) const
{
	if (m_leaves.contains(object))
		return true;

	for (ConstIterator&lt;TreeNodeBase&lt;T&gt;*&gt; iterator(m_nodes.getConstIterator()); iterator.isValid(); iterator.increment())
		if ((*iterator)-&gt;containsLeave(object))
			return true;

	return false;
}
</code></pre>
<pre><code class="language-cpp">#include &quot;treenamednode.h&quot;

template&lt;class T&gt;
TreeNamedNode&lt;T&gt;::TreeNamedNode() :
    TreeNodeBase&lt;T&gt;(0)
{ }

template&lt;class T&gt;
TreeNamedNode&lt;T&gt;::TreeNamedNode(const TreeNodeBase&lt;T&gt; *const parent, const String &amp;name) :
	TreeNodeBase&lt;T&gt;(parent),
	m_name(name)
{ }

template&lt;class T&gt;
TreeNamedNode&lt;T&gt;* const TreeNamedNode&lt;T&gt;::appendNode(const String &amp;name)
{
	TreeNamedNode&lt;T&gt;* node = createSubNode(name);

	TreeNodeBase&lt;T&gt;::m_nodes.append(node);

	return node;
}

template&lt;class T&gt;
TreeNamedNode&lt;T&gt;* TreeNamedNode&lt;T&gt;::createSubNode(const String &amp;name) const
{
	return new TreeNamedNode&lt;T&gt;(this, name);
}

template&lt;class T&gt;
SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt; TreeNamedNode&lt;T&gt;::getNode(const String &amp;name) 
{
	if (m_name == name)
		return this;

	SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt; result;

	for (Iterator&lt;TreeNodeBase&lt;T&gt;*&gt; iterator(TreeNodeBase&lt;T&gt;::m_nodes.getIterator()); iterator.isValid(); iterator.increment())
	{
		TreeNamedNode&lt;T&gt; *node = dynamic_cast&lt;TreeNamedNode&lt;T&gt;*&gt;(*iterator);

		result = node-&gt;getNode(name);

		if (!result.hasFailed())
			return result;
	}

	return SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt;();
}

template&lt;class T&gt;
const String&amp; TreeNamedNode&lt;T&gt;::getName() const
{
	return m_name;
}

template&lt;class T&gt;
Array&lt;String&gt; TreeNamedNode&lt;T&gt;::getAllNamesOfDirectNodes() const
{
	Array&lt;String&gt; names;

	for (ConstIterator&lt;TreeNodeBase&lt;T&gt;*&gt; i(TreeNodeBase&lt;T&gt;::m_nodes.getConstIterator()); i.isValid(); i.increment())
	{
		TreeNamedNode&lt;T&gt; *node = dynamic_cast&lt;TreeNamedNode&lt;T&gt;*&gt;(*i);

		assert(node != 0);

		names.append(node-&gt;getName());
	}

	return names;
}

template&lt;class T&gt;
bool TreeNamedNode&lt;T&gt;::isTagAlreadyDirectChild(const String &amp;name) const
{
	for (ConstIterator&lt;TreeNodeBase&lt;T&gt;*&gt; i(TreeNodeBase&lt;T&gt;::m_nodes.getConstIterator()); i.isValid(); i.increment())
	{
		TreeNamedNode&lt;T&gt; *node = dynamic_cast&lt;TreeNamedNode&lt;T&gt;*&gt;(*i);

		assert(node != 0);

		if (name == node-&gt;getName())
			return true;
	}

	return false;
}
</code></pre>
<p>Wäre toll, wenn da jemand weiter wüsste. Ich stehe wohl ziemlich auf dem Schlauch.</p>
<p>mfg benediktibk</p>
<p>PS: Gibts Spoiler? Wurde irgendwie recht lange ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2175440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2175440</guid><dc:creator><![CDATA[benediktibk]]></dc:creator><pubDate>Wed, 01 Feb 2012 07:18:49 GMT</pubDate></item><item><title><![CDATA[Reply to Von Template ableiten on Wed, 01 Feb 2012 07:52:13 GMT]]></title><description><![CDATA[<p>Komisch, bei mir (VC2010) baut das Beispiel:</p>
<pre><code class="language-cpp">// tessst.cpp : Defines the entry point for the console application.
//

template &lt;class T&gt; class Array;
template &lt;class T&gt; class SearchResult;
class String;

template&lt;class T&gt;
class TreeNodeBase
{
    public:
        TreeNodeBase(const TreeNodeBase&lt;T&gt; * const parent);
        virtual ~TreeNodeBase();

    public:
        virtual void appendLeave(const T &amp;object);
        virtual Array&lt;T&gt; getAllLeaves() const;
        virtual const Array&lt;T&gt;&amp; getAllDirectLeaves() const;
        virtual bool containsLeave(const T &amp;object) const;

    protected:
        Array&lt;TreeNodeBase&lt;T&gt;*&gt; m_nodes;
        Array&lt;T&gt; m_leaves;
        const TreeNodeBase&lt;T&gt; * const m_parent;
};

template&lt;class T&gt;
class TreeNamedNode : public TreeNodeBase&lt;T&gt;
{
    public:
        TreeNamedNode();
        TreeNamedNode(const TreeNodeBase&lt;T&gt; * const parent, const String &amp;name);

        virtual TreeNamedNode&lt;T&gt; * const appendNode(const String &amp;name);
        virtual SearchResult&lt;TreeNamedNode&lt;T&gt;*&gt; getNode(const String &amp;name);
        const String&amp; getName() const;
        Array&lt;String&gt; getAllNamesOfDirectNodes() const;
        bool isTagAlreadyDirectChild(const String &amp;name) const;

    protected:
        virtual TreeNamedNode&lt;T&gt; * createSubNode(const String &amp;name) const;

    private:
        String m_name;
}; 

int main(int argc, char* argv[])
{
	return 0;
}
</code></pre>
<p>Ich meine aber, dass der Fehler etwas mit einem vergessenen 'typename' zu tun hat</p>
<p>Gruss, Gast</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2175450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2175450</guid><dc:creator><![CDATA[Gast_0025]]></dc:creator><pubDate>Wed, 01 Feb 2012 07:52:13 GMT</pubDate></item><item><title><![CDATA[Reply to Von Template ableiten on Wed, 01 Feb 2012 09:20:45 GMT]]></title><description><![CDATA[<p>Ich sehs zwar grade nicht, ob und wie das der Grund sein könnte, aber du hast da einen zirkulären #include - treenodebase.hpp/.cpp includieren sich gegenseitig. Normalerweise includiert in so einem Fall der template Header die methodendefinitionen, allerdings haben die Definitionsdateien dann andere Endungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2175485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2175485</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 01 Feb 2012 09:20:45 GMT</pubDate></item><item><title><![CDATA[Reply to Von Template ableiten on Wed, 01 Feb 2012 12:36:48 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Ich sehs zwar grade nicht, ob und wie das der Grund sein könnte, aber du hast da einen zirkulären #include - treenodebase.hpp/.cpp includieren sich gegenseitig. Normalerweise includiert in so einem Fall der template Header die methodendefinitionen, allerdings haben die Definitionsdateien dann andere Endungen.</p>
</blockquote>
<p>Die beiden includes sind Absicht, durch den Include-Guard wird sowieso nur einmal der Header inkludiert und so habe ich zudem Code-Vervollständigung und Syntax-Highlighting in der cpp. Der Fehler beim Kompilieren kommt immer noch, wenn ich den include des Headers in der cpp lösche.</p>
<p>Gast_0025 schrieb:</p>
<blockquote>
<p>Ich meine aber, dass der Fehler etwas mit einem vergessenen 'typename' zu tun hat</p>
</blockquote>
<p>Wo könnte da ein typename fehlen?</p>
<p>Danke für die raschen Antworten,<br />
benediktibk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2175587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2175587</guid><dc:creator><![CDATA[benediktibk]]></dc:creator><pubDate>Wed, 01 Feb 2012 12:36:48 GMT</pubDate></item><item><title><![CDATA[Reply to Von Template ableiten on Wed, 01 Feb 2012 12:55:52 GMT]]></title><description><![CDATA[<p>Zeig uns mal bitte aufs Wesentliche reduzierten Code, bei dem das Problem noch nachstellbar ist. Das heißt, nimm alle Methoden etc. aus den Klassen nacheinander raus und schau, ob das Problem immernoch besteht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2175607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2175607</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 01 Feb 2012 12:55:52 GMT</pubDate></item><item><title><![CDATA[Reply to Von Template ableiten on Wed, 01 Feb 2012 15:03:30 GMT]]></title><description><![CDATA[<p>Der letzte Tipp war gut, wenn auch indirekt. Der Grund des Fehlers waren zwei Include-Guards mit dem selben Namen. Ich hatte vor kurzem ein paar Sachen aufgeräumt und umbenannt, daher kommt der Konflikt wohl.</p>
<p>Vielen Dank,<br />
benediktibk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2175710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2175710</guid><dc:creator><![CDATA[benediktibk]]></dc:creator><pubDate>Wed, 01 Feb 2012 15:03:30 GMT</pubDate></item></channel></rss>