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# 中!)。如果您的意思是 List (具有 Add() 方法),那么它将是

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