簡體   English   中英

C ++ / CLI:如何編寫屬性的屬性

[英]C++/CLI: How to write property of the property

我在C ++ / CLI中有2個引用類:

>頭等艙:

 public ref class wBlobFilter
    {
        int  mMin;
        int  mMax;
        bool mIsActive;

    public:

        //  min value
        property int Min
        {
            int get() {return mMin;}
            void set(int value) {mMin = value;}
        }

        //  max value
        property int Max
        {
            int get(){return mMax;}
            void set(int value){mMax = value;}
        }

        //  set to true to active
        property bool IsActive
        {
            bool get() {return mIsActive;}
            void set(bool value){mIsActive = value;}
        }
    };

>第二類:

    public ref class wBlobParams
    {
        wBlobFilter mFilter;

    public:

        property wBlobFilter Filter
        {
            wBlobFilter get() {return mFilter;}
            void set(wBlobFilter value) { mFilter = value; }
        }
    };

當我在C#中調用它時,出現錯誤消息: “由於它不是變量,因此無法修改返回值”

        Params.Filter.Min = 0;

因此,如何直接通過wBlobParams類的屬性設置wBlobFilter類的成員變量的值? 對不起,我的英語不好。 謝謝!!!

很難知道您到底想發生什么。 如果繼承,則過濾器的屬性將可用。

public ref class wBlobParams : public wBlobFilter
{};

void f(wBlobParams^ params) {
    auto max = params->Max;
}

或在wBlobParams中復制屬性訪問:

public ref class wBlobParams {
public:
    wBlobFilter^ mFilter;

    property int Max {
        int get() { return mFilter->Max; }
    }
};

void f(wBlobParams^ params) {
    auto max = params->Max;
}

編輯1:
看這個。 你在做什么很好。 只是您使用gc句柄的語法是錯誤的。

public ref class cA {
    int x;

public:
    cA() : x(0) {}

    property int X  {
        int get() { return x; }
        void set(int _x) { x = _x; }
    }
};

public ref class cB {
    cA^ a;
public:
    cB() : a(gcnew cA()) {}

    property cA^ A  {
        cA^ get() { return a; }
        void set(cA^ _a) { a = _a; }
    }
};

void main() {
    cB^ b = gcnew cB();
    b->A->X = 5;
    Console::WriteLine(b->A->X);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM