From: Thomas Jäger (jaeger_at_our-isp.org)
Date: 02. Jul 2002
On Tue, 2 Jul 2002, Mark Seuffert wrote:
> ich hab einen funktionierenden C++ Code, versteh aber nicht warum der Compiler mich
> bei Templates zwingt meine "friends" anders zu deklarieren.
>
> Gegeben sind eine Klasse CTexture, die von Klasse CTextureManager verwaltet wird.
> Gebe ich also in CTexture an:
>
> friend class CTextureManager;
>
> Leite ich jetzt meine Klasse CTextureManager von einem Template CManager<CTexture>
> ab geht das nimmer, ich muss mein friend definieren als:
>
> friend class CManager<CTexture>; //CTextureManager doesn't work here anymore
Der Fehler liegt wohl wo anders, das hier funktioniert einwandfrei:
----------------------------
template <typename T>
class CManager
{
public:
CManager() {}
};
class CTextureManager;
class CTexture
{
friend class CTextureManager;
public:
CTexture() {}
private:
int k;
};
class CTextureManager : public CManager<CTexture>
{
public:
CTextureManager() {}
// test if friendship works
void op( CTexture& t ) { t.k = 5; }
};
int main() {}
--------------------------
Achja, was haelst Du von namespaces, dann brauchst Du nicht so elend lange
Namen.
Thomas
-- Thomas Jaeger <jaeger_at_our-isp.org>100% reliable The HAL9000 is the most sophisticated computer ever built The only errors the machine makes are human
Dieses Archiv wurde generiert von hypermail 2.1.2 : 02. Jul 2002 CEST