2011-12-19 2 views
9

私はRenderShaderというテンプレートクラスを持っています。私はRenderというクラスも持っています。私はRenderShaderテンプレートクラスのすべてのインスタンスをRenderと仲間にしたいと思っています。また、ユーザは独自のRenderShaderインスタンスを作成することができるため、メインヘッダファイルにすべてのインスタンスをリストすることはできません。たとえば、次のように間違っているC++:テンプレートクラスのすべてのインスタンスを友人にすることは可能ですか?

template<class vertdef> 
class RenderShader 
{ 
public: 
..... 
}; 

class Render 
{ 
    friend class RenderShader; 
public: 
    .... 
}; 

構文「友人RenderShader」、私がやりたい何のための正しい構文はありますか? 4つのシステムの3に取り組ん

答えて

16
class Render 
{ 
    template<class vertdef> 
    friend class RenderShader; 
public: 
    .... 
}; 
+0

私は私のコードをコンパイルしています:それはVS2010 PC、VS2010 XBox360上、クロムネイティブ・クライアントで働いていました。 GP2XWizにg ++(Dev-C++と一緒にインストールされている)を使用しても動作しませんでした。 – KPexEA

+0

@KPexEA:最後にDev-C++にはGCC 3.4.xが付属していますが、これは現時点では古代にかなり近いです。 MinGWを現在のバージョン(4.6.x)にアップデートしてみてください。 – ildjarn

+0

@KPexEAテンプレートクラスを宣言しましたか? (友人宣言と同じ構文) –

関連する問題