0

このマネージ C++ コードを C++/CLI に変換できません。誰かがポインターを与えることができますか (しゃれが意図されています)?

static String *ignoreStrings[];

コードの後半で、Add(string) メソッドが呼び出されます。他の場所では、一部の C# コードで、

new String[]{"foo", "bar"}

上記の ignoreStrings の型に何らかの形でキャストされる関数に渡されます。

私はこの構文を試しました:

static array<String^> ^ignoreStrings;

ただし、その C# 配列からキャストすることはできず、add メソッドもありません。


編集:これが何らかの形で質問を変更することを期待して、より完全なコード...

private:
    static String *ignoreStrings[];

public:
    void AddIgnoreString(String *ignore)
    {
        AddOneIgnoreString(ignore);
    }

    void SetIgnoreStringData(String *ignore[])
    {
        SetIgnoreStrings(ignore);
    }

    static void SetIgnoreStrings(String *ignore[])
    {
            ignoreStrings = ignore;
    }
    static void AddOneIgnoreString(String ^ignore)
    {
        ignoreStrings->Add(ignore);
    }

他の場所では、C# コードから、次の呼び出しが行われます。

SetIgnoreStrings(new String[]{"foo", "bar"});

これは、C++ コードを次のように変換しようとしたものです。

private:
    static array<String^> ^ignoreStrings;

public:
    virtual void AddIgnoreString(String ^ignore)
    {
        AddOneIgnoreString(ignore);
    }

    virtual void SetIgnoreStringData(array<String^> ^ignore)
    {
        SetIgnoreStrings(ignore);
    }

    static void SetIgnoreStrings(array<String^> ^ignore)
    {
        ignoreStrings = ignore;
    }

    static void AddOneIgnoreString(String ^ignore)
    {
        ignoreStrings->Add(ignore);
    }

    static array<String^> ^GetIgnoreStrings()
    {
        return ignoreStrings;
    }
4

1 に答える 1

2

あなたの試み

static array<String^> ^ignoreStrings;

動作するはずです!

.NET配列にはAddメソッドがありません(C ++ / CLIまたはC#にはありません!)。(Add()メソッドを持つ)リストを意味する場合、それは次のようになります

static System::Collections::Generic::List<String ^> ^ignoreStrings;
于 2009-07-08T14:58:50.407 に答える