C# で C++/CLI dll からインターフェイスを実装したいと考えています。しかし、C++ での戻り値の最適化に問題があると思います。検討
// BVHTree.cpp:
public value struct Vector3
{
float X, Y, Z;
};
public value struct TriangleWithNormal
{
Vector3 A, B, C, Normal;
};
public interface class IBVHNode
{
property TriangleWithNormal Triangle { TriangleWithNormal get(); } // among others
property bool IsLeaf { bool get(); } // can implement this
};
// BVHNode.cs:
public class BVHNode : IBVHNode // Error: member TriangleWithNormal* IBVHNode.get_Triangle(TriangleWithNormal*) not implemented (sth. along those lines)
{
public TriangleWithNormal Triangle { get { return new TriangleWithNormal(); } }
public bool IsLeaf { get { return true; } }
}
BVNode
実装されていないと文句を言いますIBVHNode
。私の最後の手段は、通常の方法でアクセスするか、ビジュアルスタジオが示唆するようなアンセーフモードを使用することです:
public TriangleWithNormal* get_Triangle(TriangleWithNormal* t)
{
throw new NotImplementedException();
}
プロパティ構文でそれを実装する方法はありますか (... を作成TriangleWithNormal
する以外にref class
)?
Update 1TriangleWithNormal GetTriangle()
同じ理由でメソッドの実装が失敗するようです。ただし、のように使用できますvoid GetTriangle(TriangleWithNormal%);
。