1

avl_nodeという名前の構造体を使用しており、コードは以下のとおりです。

unsafe struct avl_node
    {
        Studentdb data;
        avl_node *left;
        avl_node *right;
        int height;
    };

avl_methodsという名前のクラスで関数Heightを作成したい..以下のコードを参照してください。

class avl_methods
{
    public unsafe int height(avl_node *a_node)
    {
        if(a_node==NULL)
        {
            return -1;
        }
        else
        {
            return a_node->height;
        }
    }
}

今私が得ているエラーは、マネージ型のアドレスを取得したり、サイズを取得したり、ポインターを宣言したりできません。プロジェクトで安全でないコードを許可しましたが。私を助けてください。私のプロジェクトの要件であるため、構造内でポインターを使用したいと本当に思っています。私はWPF 4.0を使用してデスクトップアプリを開発しています...

より良い対応を期待!

4

2 に答える 2

0

問題は、Studentdb 構造に関連している必要があります。avl_node を宣言している場所からは見えないと思います

このスニペットは、あなたが得ているエラーを発生させます

    unsafe struct avl_node
    {
        Studentdb data;
        avl_node* left;
        avl_node* right;
        int height;
    };

    //unsafe struct Studentdb
    //{
    //    int height;
    //};

これで結構です

    unsafe struct avl_node
    {
        Studentdb data;
        avl_node* left;
        avl_node* right;
        int height;
    };

    unsafe struct Studentdb
    {
        int height;
    };

投稿されたコードのポインタの宣言には問題はありません。

アップデート

これは、ユーザーが最初に投稿したときに持っていなかった struct Studentdb の OP 定義です。

struct Studentdb
{
 int student_id;
 String Student_name;
 Date dob;
 char gender;
 String department;
};

構造体を次のように変更することもできます。

    struct Studentdb
    {
        int student_id;
        char * []Student_name;
        char*[] dob;
        char gender;
        char*[] department;
    };

string は clr 型であるため、ポインターでは使用できません。

于 2013-05-02T10:06:36.937 に答える