<?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[Casting?]]></title><description><![CDATA[<p>Hallo,</p>
<p>was muss ich machen, damit dieser Code funktioniert:</p>
<pre><code class="language-cpp">class B;
class A
{
public:
	A()
	{
	}
	A(const B&amp;)
	{
	}
};

class B:private A
{
};

void Test(const A&amp;)
{
}

int main()
{
	B b;
	Test(b);
}
</code></pre>
<pre><code>main.cpp(24) : error C2243: 'type cast' : conversion from 'B *' to 'const A &amp;' exists, but is inaccessible
</code></pre>
<p>Eigentlich ist ja der passende Konstruktor vorhanden. Muss ich wirklich einen expliziten Casting-Operator anführen?</p>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201419/casting</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 02:28:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201419.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 29 Dec 2007 18:19:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Casting? on Sat, 29 Dec 2007 18:19:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>was muss ich machen, damit dieser Code funktioniert:</p>
<pre><code class="language-cpp">class B;
class A
{
public:
	A()
	{
	}
	A(const B&amp;)
	{
	}
};

class B:private A
{
};

void Test(const A&amp;)
{
}

int main()
{
	B b;
	Test(b);
}
</code></pre>
<pre><code>main.cpp(24) : error C2243: 'type cast' : conversion from 'B *' to 'const A &amp;' exists, but is inaccessible
</code></pre>
<p>Eigentlich ist ja der passende Konstruktor vorhanden. Muss ich wirklich einen expliziten Casting-Operator anführen?</p>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427740</guid><dc:creator><![CDATA[blubbaBlubb]]></dc:creator><pubDate>Sat, 29 Dec 2007 18:19:22 GMT</pubDate></item><item><title><![CDATA[Reply to Casting? on Sat, 29 Dec 2007 20:05:09 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class A
{
public:
	A()
	{
	}
};

class B:private A
{
};

void Test(const A&amp;)
{
}

int main()
{
	B b;
	Test(b);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1427797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427797</guid><dc:creator><![CDATA[Der Zoowärter]]></dc:creator><pubDate>Sat, 29 Dec 2007 20:05:09 GMT</pubDate></item><item><title><![CDATA[Reply to Casting? on Sat, 29 Dec 2007 20:54:28 GMT]]></title><description><![CDATA[<p>Funktioniert nicht. Wieder:</p>
<pre><code>main.cpp(20) : error C2243: 'type cast' : conversion from 'B *' to 'const A &amp;' exists, but is inaccessible
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1427828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427828</guid><dc:creator><![CDATA[blubbaBlubb]]></dc:creator><pubDate>Sat, 29 Dec 2007 20:54:28 GMT</pubDate></item><item><title><![CDATA[Reply to Casting? on Sat, 29 Dec 2007 21:49:21 GMT]]></title><description><![CDATA[<p>Du vererbst ja auch privat, d.h. nur die Schnittstelle und das bedeutet, daß ein B kein A ist.<br />
Und dein Klassen-Design solltest du mal überdenken, da A und B gegenseitig voneinander abhängig sind.</p>
<p>Funktioniert denn:</p>
<pre><code class="language-cpp">int main()
{
    B b;
    Test(A(b));
}
</code></pre>
<p>???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427855</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 29 Dec 2007 21:49:21 GMT</pubDate></item><item><title><![CDATA[Reply to Casting? on Sat, 29 Dec 2007 21:51:56 GMT]]></title><description><![CDATA[<p>Jep, das geht. Der Punkt ist, dass jetzt aus Effizienzgründen B große Teile von A übernimmt (was sich aber später ändern kann), daher macht diese private Vererbung sinn. Naja, egal. Ich nehm einfach einen expliziten Casting-Operator, dann klappt es...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427856</guid><dc:creator><![CDATA[blubbaBlubb]]></dc:creator><pubDate>Sat, 29 Dec 2007 21:51:56 GMT</pubDate></item><item><title><![CDATA[Reply to Casting? on Sat, 29 Dec 2007 22:08:16 GMT]]></title><description><![CDATA[<blockquote>
<p>Muss ich wirklich einen expliziten Casting-Operator anführen?</p>
</blockquote>
<p>Ja. Aus dem Namespace bohlen:: den dieter...<br />
rya.<br />
*scnr*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427860</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 29 Dec 2007 22:08:16 GMT</pubDate></item><item><title><![CDATA[Reply to Casting? on Wed, 02 Jan 2008 08:35:51 GMT]]></title><description><![CDATA[<p>Ändere das einfach von privater Vererbung auf Komposition:</p>
<pre><code class="language-cpp">class B;

class A
{
public:
    A() {}
    A(const B&amp;) {}
};

class B
{
private:
    A m_a;
};
</code></pre>
<p>Fertig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429106</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 02 Jan 2008 08:35:51 GMT</pubDate></item></channel></rss>