トップ回答者
ジェネリック T 型への変換

質問
-
C#構文の質問です。
XNAの
public void DrawUserPrimitives<T>(PrimitiveType primitiveType, T[] vertexData, int vertexOffset, int primitiveCount);
をラップしたくて、
別クラスに
public void draw<T>(PrimitiveType primitiveType, T[] vertexData, int primitiveCount)
{
device.DrawUserPrimitives(primitiveType, vertexData, 0, primitiveCount);
}
を作成しました。
その際、CS0314エラー
型 '型 1' はジェネリック型またはメソッド '名前' 内で型パラメータ '名前' として使用できません。'型 1' から '型 2' へのボックス変換または型パラメータ変換がありません。
が出ました。
where T での制約が必要だとの事で、
色々試しましたが、エラーを解決出来ないでいます。
XNAのDrawUserPrimitivesのvertexData引数は、
VertexPositionColorTexture 等のstructなので、
制約になるのでしょうか・・・
C#初心者でいまいち要領がつかめなくて申し訳ありません。
ご教授宜しくお願い致します。
回答
-
DrawUserPrimitivesにカーソルを合わせてF12キーを押すと、下記のようなメタデータを見ることができます。
public void DrawUserPrimitives<T>(PrimitiveType primitiveType, T[] vertexData, int vertexOffset, int primitiveCount) where T : struct;
これによると、"where T : struct"という制約がついているようですね。
その自作したdrawメソッドにも"where T : struct"とつければ、コンパイルは通ると思いますよ。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク kentakenta 2009年5月24日 4:15
すべての返信
-
DrawUserPrimitivesにカーソルを合わせてF12キーを押すと、下記のようなメタデータを見ることができます。
public void DrawUserPrimitives<T>(PrimitiveType primitiveType, T[] vertexData, int vertexOffset, int primitiveCount) where T : struct;
これによると、"where T : struct"という制約がついているようですね。
その自作したdrawメソッドにも"where T : struct"とつければ、コンパイルは通ると思いますよ。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク kentakenta 2009年5月24日 4:15
-
カーソルを合わせて、F12をおしても、
public void DrawUserPrimitives<T>(PrimitiveType primitiveType, T[] vertexData, int vertexOffset, int primitiveCount);
しか表示されず、肝心なwhere T : struct が見れませんでした。
何か表示方法は御座いますでしょうか?見えているものが違うのかな?
下記の私のページで画像つきで私が見ているものをちょっと上げてみました。
http://azulean.spaces.live.com/blog/cns!9E1932AF4BE9E15D!192.entry
→ http://azulea.wordpress.com/2009/05/16/graphicsdevice-drawuserprimitives%e3%81%ae%e3%83%a1%e3%82%bf%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e8%a1%a8%e7%a4%ba%e6%96%b9%e6%b3%95/
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
- 編集済み AzuleanMVP, Moderator 2011年1月4日 15:57 URL変更