Я пытаюсь использовать сортировку в C#. В C++ У меня есть эта структура:C#: Указатель на структуру внутри структуры
struct aiScene
{
unsigned int mFlags;
C_STRUCT aiNode* mRootNode;
unsigned int mNumMeshes;
C_STRUCT aiMesh** mMeshes;
unsigned int mNumMaterials;
C_STRUCT aiMaterial** mMaterials;
unsigned int mNumAnimations;
C_STRUCT aiAnimation** mAnimations;
unsigned int mNumTextures;
C_STRUCT aiTexture** mTextures;
unsigned int mNumLights;
C_STRUCT aiLight** mLights;
unsigned int mNumCameras;
C_STRUCT aiCamera** mCameras;
}
Так, C# eqvivalent является:
[StructLayout(LayoutKind.Sequential)]
public struct aiScene
{
public uint mFlags;
public unsafe aiNode* mRootNode;
public uint mNumMeshes;
public unsafe aiMesh** mMeshes;
public uint mNumMaterials;
public unsafe aiMaterial** mMaterials;
public uint mNumAnimations;
public unsafe aiAnimation** mAnimations;
public uint mNumTextures;
public unsafe aiTexture** mTextures;
public uint mNumLights;
public unsafe aiLight** mLights;
public uint mNumCameras;
public unsafe aiCamera** mCameras;
}
Но многие на этом структурах управляются (aiNode, aiMesh, aiLight) и т.д. Таким образом, у меня есть эта ошибка :
Cannot take the address of, get the size of, or declare a pointer to a managed type ('Assimp.aiNode')
Любые идеи о том, как решить эту проблему?
Господи, что за изврат ... лучше взять C++ \ CLI. Большое спасибо за ответ! – 2009-07-19 04:27:15
Использование IntPtr для всех этих типов быстро становится кошмаром, потому что нет проверки типа, разделяющей различные типы IntPtr. Лучше использовать небезопасную структуру *. (определите каждый тип, например aiNode, как тип структуры, затем используйте небезопасный aiNode *) –