【问题标题】:How to convert vc++(ex: IListPtr ) pointer to std::list?如何将 c++(例如:IList Ptr)指针转换为 std::list?
【发布时间】:2010-11-05 05:06:10
【问题描述】:

任何机构都可以帮助我将接口指针转换为 vc++ 中的列表变量,因为我在类型转换时遇到错误

错误 2440 “类型转换”:无法从 '_bstr_t' 转换为 'std::list<_ty>'

编辑:我是这样做的:

C#

List<string> Disp() {
    List<string> li = new List<string>();
    li.Add("Ravi");
    li.Add("Raj");
    Return li;
}

C++

void main() {
    HRESULT Hr=CoInitilize(NULL);
    ITestPtr p(__uuid("DemoClass");
    std::list l=(std::list)p->Disp();
}

但奇怪的是,有时它显示 Disp 不是 ITest 的成员,有时显示类型转换错误。我已经验证这只是因为返回类型是 List

【问题讨论】:

  • 首先,您需要向我们展示一些代码。其次,我们查看您的代码并为您提供建议。很漂亮吧?

标签: c# c++ visual-c++ com


【解决方案1】:

您也可以使用Boost Range MFC/ATL Extenstion

CList<CString> vcList;
std::list<T> stdList;
BOOST_FOREACH( CString s, vcList)
{
    stdList.push_back(s);
}

【讨论】:

    【解决方案2】:

    除非有一个非常好的快捷方式,否则我希望最好的办法是手动遍历 CLI 列表并将 push_back() 放到 std::list 上。

    作为一个可能的示例(我不知道 C++/CLI)

    std::list<T> stdlist;
    foreach(T t in CLIlist)
    {
        stdlist.push_back(t);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2020-05-19
      相关资源
      最近更新 更多