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

C++调用带std::string参数的int返回函数时出现类型不匹配报错

问题根因

报错和返回值类型匹配无关,是传参时的字符串字面量写法错误:

  • C++语法规定,单引号'只能用于包裹单个字符,对应类型为char;如果单引号内写入多个字符,会被编译器识别为多字符字面量,实际类型为int,这就是报错信息中提到的rvalue of type 'int'的来源,自然无法绑定到函数要求的const std::string&类型参数。
  • 字符串字面量必须使用双引号"包裹,才是可隐式转换为std::string的const char*类型C风格字符串。
修复方案

将main函数中两处传参的单引号替换为双引号即可,修正后的核心代码:

int main() {
    VideoProcessing vid;
    int fps = vid.getFPS("mesh.mp4");
    unsigned long size = vid.getSize("mesh.mp4");

    std::cout << fps << std::endl;
    std::cout << size << std::endl;

    return 0;
}
可选优化建议
  • 现有getFPS函数未校验视频文件是否成功打开,若传入路径无效,cv::VideoCapture::get会直接返回0,后续使用该返回值可能引发逻辑异常,建议补充打开状态判断。
  • getSize函数内部使用std::filesystem::file_size返回的std::uintmax_t类型,与函数声明的unsigned long返回值在部分平台位宽不一致,可能存在隐式数值截断风险,建议统一返回值类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:18:32