私はC++に精通しており、現在C#を少し学ぼうとしています。そうは言っても、私には4行のコードがあります。
[DllImport(@"Graphics.dll")]
public static extern vec2 operator * (vec2 a);
[DllImport(@"Graphics.dll")]
public static extern vec2 operator / (vec2 a);
[DllImport(@"Graphics.dll")]
public static extern vec3 operator * (vec3 a);
[DllImport(@"Graphics.dll")]
public static extern vec3 operator / (vec3 a);
また、VCS Expressでは、下線付きOverloadable unary operator expected
のエラーが表示されます。MSDNによると、どちらもオーバーロード可能です。両方の演算子は単項ではなく、バイナリの下にリストされていますが。どうしたの?*
/
そして、完全にするために、ここに、私がラップしているDLLのクラス全体をそのまま示します。
class GraphicsDLL
{
public struct vec2
{
float x, y;
[DllImport(@"Graphics.dll")]
vec2();
[DllImport(@"Graphics.dll")]
vec2(float ax, float ay);
[DllImport(@"Graphics.dll")]
public static extern vec2 operator + (vec2 a);
[DllImport(@"Graphics.dll")]
public static extern vec2 operator - (vec2 a);
[DllImport(@"Graphics.dll")]
public static extern vec2 operator * (vec2 a);
[DllImport(@"Graphics.dll")]
public static extern vec2 operator / (vec2 a);
};
public struct vec3
{
float x, y, z;
[DllImport(@"Graphics.dll")]
vec3();
[DllImport(@"Graphics.dll")]
vec3(float ax, float ay, float az);
[DllImport(@"Graphics.dll")]
public static extern vec3 operator + (vec3 a);
[DllImport(@"Graphics.dll")]
public static extern vec3 operator - (vec3 a);
[DllImport(@"Graphics.dll")]
public static extern vec3 operator * (vec3 a);
[DllImport(@"Graphics.dll")]
public static extern vec3 operator / (vec3 a);
};
};