【问题标题】:managed c++ syntax托管 c++ 语法
【发布时间】:2010-11-09 01:45:56
【问题描述】:

尽我所能,我无法将此托管 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;
    }

【问题讨论】:

  • 你能不能用反射器看看从“static String *ignoreStrings[];”生成什么类型​​?以及从“ignoreStrings->Add(ignore);”生成的 IL 代码是什么线?我不认为 ignoreStrings 是一个 .NET 数组,而是一个 ArrayList、List 或类似的东西。因为 .NET 数组没有 Add() 方法!

标签: c++-cli managed-c++


【解决方案1】:

你的尝试

static array<String^> ^ignoreStrings;

应该可以!

.NET 数组没有 Add 方法(不在 C++/CLI 或 C# 中!)。 如果你的意思是一个 List (它有一个 Add() 方法)那么它会是

static System::Collections::Generic::List<String ^> ^ignoreStrings;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 2013-01-07
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多