You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过指针/引用传递TStringList至函数时出现调用匹配错误

问题解决:No matching function call 错误分析与修复

错误原因

你调用ParseOMT时传递的第二个参数类型不匹配:

  • 调用代码里metaData是std::unique_ptr<TStringList>,&metaData得到的是指向智能指针的指针(std::unique_ptr<TStringList>*)
  • 但ParseOMT函数的第二个参数要求的是TStringList*(原始指针)
    两种类型完全不兼容,因此编译器报"No matching function call"。

修复方案

方案1:传递智能指针管理的原始指针(推荐)

利用std::unique_ptr的get()方法,获取它所管理的原始TStringList*指针,直接传递给函数:

_retVal = ParseOMT(inpBuf, metaData.get(), _reportIt);

这样函数内部可以通过该指针修改TStringList的内容,原函数中的metaData依然持有对象所有权,不会出现内存泄漏。

额外说明

你函数声明和定义中的第二个参数名不一致(_currMetadata vs _metadata),这在C++中是允许的,参数名不影响函数匹配,不是导致错误的原因。

内容的提问来源于stack exchange,提问作者JKofsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:37:02