<?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[Definition kann keinen (mehreren) Deklarationen zugeordnet werden]]></title><description><![CDATA[<p>Die Fehlermeldung sagt ja eigentlich schon alles, aber ich verstehe nicht, wieso der Compiler das in meinem Fall nicht kann:</p>
<p>matrix**.h**</p>
<pre><code class="language-cpp">namespace my {

template &lt;typename ValueType&gt;
class TLine
{
public:
	typedef size_t		SizeType;
private:
	struct _m
	{
		SizeType row_count;
		ValueType *values;
	};

	_m m;
public:
	TLine() throw();
	TLine(SizeType row_count);
	TLine(SizeType row_count, ValueType fill_with);
	TLine(SizeType row_count, const ValueType *fill_with);

	template &lt;typename ValueType_rhs&gt;
	TLine (const typename TLine &lt;ValueType_rhs&gt; &amp;rhs);
};

}
#include &quot;matrix.impl&quot;
</code></pre>
<p>matrix**.impl**</p>
<pre><code class="language-cpp">namespace my {

template &lt;typename ValueType, typename ValueType_rhs&gt;
TLine &lt;ValueType&gt;::TLine(const typename TLine &lt;ValueType_rhs&gt; &amp;rhs)
	:	m(rhs.m)
{
	InitArray(rhs.m.values);
}

}
</code></pre>
<p>Die vollständige <strong>Fehlermeldung</strong>:</p>
<pre><code>1&gt;f:\c\libs\math\matrix.impl(25) : error C2244: 'my::TLine&lt;ValueType&gt;::{ctor}' : unable to match function definition to an existing declaration
1&gt;        definition
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(const my::TLine&lt;ValueType_rhs&gt; &amp;)'
1&gt;        existing declarations
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(const my::TLine&lt;ValueType_rhs&gt; &amp;)'
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(my::TLine&lt;ValueType&gt;::SizeType,const ValueType *)'
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(my::TLine&lt;ValueType&gt;::SizeType,ValueType)'
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(my::TLine&lt;ValueType&gt;::SizeType)'
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(void) throw()'
</code></pre>
<p>Zur Frage an sich: Wie kann ich das verhindern ohne irgendwelche Dummy-Parameter übergeben zu müssen? Liegt es vll daran, dass der Compiler einen eigenen Copy-CTor erzeugt und dieser den Konflikt erzeugt - falls ja, kann ich das umgehen?</p>
<p>(IDE=VS 2008 Prof.)</p>
<p>Danke schon mal, bb</p>
<p>edit: hatte das typedef für sizetype vergessen ^^ + tippfehler + vorschnelle lösung &gt;&lt; ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230143/definition-kann-keinen-mehreren-deklarationen-zugeordnet-werden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 14:30:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230143.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 21 Dec 2008 15:24:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Definition kann keinen (mehreren) Deklarationen zugeordnet werden on Sun, 21 Dec 2008 15:41:36 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung sagt ja eigentlich schon alles, aber ich verstehe nicht, wieso der Compiler das in meinem Fall nicht kann:</p>
<p>matrix**.h**</p>
<pre><code class="language-cpp">namespace my {

template &lt;typename ValueType&gt;
class TLine
{
public:
	typedef size_t		SizeType;
private:
	struct _m
	{
		SizeType row_count;
		ValueType *values;
	};

	_m m;
public:
	TLine() throw();
	TLine(SizeType row_count);
	TLine(SizeType row_count, ValueType fill_with);
	TLine(SizeType row_count, const ValueType *fill_with);

	template &lt;typename ValueType_rhs&gt;
	TLine (const typename TLine &lt;ValueType_rhs&gt; &amp;rhs);
};

}
#include &quot;matrix.impl&quot;
</code></pre>
<p>matrix**.impl**</p>
<pre><code class="language-cpp">namespace my {

template &lt;typename ValueType, typename ValueType_rhs&gt;
TLine &lt;ValueType&gt;::TLine(const typename TLine &lt;ValueType_rhs&gt; &amp;rhs)
	:	m(rhs.m)
{
	InitArray(rhs.m.values);
}

}
</code></pre>
<p>Die vollständige <strong>Fehlermeldung</strong>:</p>
<pre><code>1&gt;f:\c\libs\math\matrix.impl(25) : error C2244: 'my::TLine&lt;ValueType&gt;::{ctor}' : unable to match function definition to an existing declaration
1&gt;        definition
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(const my::TLine&lt;ValueType_rhs&gt; &amp;)'
1&gt;        existing declarations
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(const my::TLine&lt;ValueType_rhs&gt; &amp;)'
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(my::TLine&lt;ValueType&gt;::SizeType,const ValueType *)'
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(my::TLine&lt;ValueType&gt;::SizeType,ValueType)'
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(my::TLine&lt;ValueType&gt;::SizeType)'
1&gt;        'my::TLine&lt;ValueType&gt;::TLine(void) throw()'
</code></pre>
<p>Zur Frage an sich: Wie kann ich das verhindern ohne irgendwelche Dummy-Parameter übergeben zu müssen? Liegt es vll daran, dass der Compiler einen eigenen Copy-CTor erzeugt und dieser den Konflikt erzeugt - falls ja, kann ich das umgehen?</p>
<p>(IDE=VS 2008 Prof.)</p>
<p>Danke schon mal, bb</p>
<p>edit: hatte das typedef für sizetype vergessen ^^ + tippfehler + vorschnelle lösung &gt;&lt; ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633620</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 21 Dec 2008 15:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to Definition kann keinen (mehreren) Deklarationen zugeordnet werden on Sun, 21 Dec 2008 15:46:13 GMT]]></title><description><![CDATA[<p>Ich denke mal, dass du da nichts gross anderst machen kannst, als die Implementierung in der Klasse zu halten. In dieser Konstelation habe ich das auch noch nie ausserhalb einer Klasse gesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633634</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 21 Dec 2008 15:46:13 GMT</pubDate></item><item><title><![CDATA[Reply to Definition kann keinen (mehreren) Deklarationen zugeordnet werden on Sun, 21 Dec 2008 16:57:28 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Ich denke mal, dass du da nichts gross anderst machen kannst, als die Implementierung in der Klasse zu halten.</p>
</blockquote>
<p>Jopp - in der Hoffnung, dass er dann in der Anwendung an sich den CTor richtig zuordnen kann... ^^</p>
<p>drakon schrieb:</p>
<blockquote>
<p>In <strong>dieser</strong> Konstelation habe ich das auch noch nie ausserhalb einer Klasse gesehen.</p>
</blockquote>
<p>Was meinst du mit dieser Konstellation?</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633671</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 21 Dec 2008 16:57:28 GMT</pubDate></item><item><title><![CDATA[Reply to Definition kann keinen (mehreren) Deklarationen zugeordnet werden on Sun, 21 Dec 2008 17:18:59 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">namespace my { 

template&lt;typename ValueType&gt;
template&lt;typename ValueType_rhs&gt;
TLine &lt;ValueType&gt;::TLine(const typename TLine &lt;ValueType_rhs&gt; &amp;rhs) 
    :    m(rhs.m) 
{ 
    InitArray(rhs.m.values); 
} 

}
</code></pre>
<p>So sollte das gehen!</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633681</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 21 Dec 2008 17:18:59 GMT</pubDate></item><item><title><![CDATA[Reply to Definition kann keinen (mehreren) Deklarationen zugeordnet werden on Sun, 21 Dec 2008 17:29:30 GMT]]></title><description><![CDATA[<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f618.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_blowing_a_kiss"
      title=":-*"
      alt="😘"
    /></p>
<p><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=";D"
      alt="😉"
    /></p>
<p>Ich wusste doch gleich, warum ich nachfrage statt ewig rumzufummeln ^^ wär ich nicht drauf gekommen, dass er das (wie genau nennt man das eigtl? ^^) einzeln will ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633687</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 21 Dec 2008 17:29:30 GMT</pubDate></item><item><title><![CDATA[Reply to Definition kann keinen (mehreren) Deklarationen zugeordnet werden on Sun, 21 Dec 2008 17:39:56 GMT]]></title><description><![CDATA[<p>Wie man das nennt? Ehm ... glaube ganz einfach &quot;Inner Template&quot;. Sobald es einfach einen Templateparameter bei einer Funktion oder Klasse hat, welche sich bereits in einer Klasse mit Templateparameter befindet, muss dies so definiert werden. Deshalb eben auch das &quot;Inner&quot;, weil es eben ein Template im Template ist. <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>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633693</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 21 Dec 2008 17:39:56 GMT</pubDate></item></channel></rss>