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

如何从C++函数返回vector<vector<OrderBookEntry>>?编译错误解决

编译错误:no suitable user-defined conversion 解决方法

你的编译错误核心原因是函数返回类型声明与实际返回对象类型不匹配:

  • 函数定义里声明返回的是 std::vector<OrderBookEntry>,但你实际要返回的 Total_entries 是 std::vector<std::vector<OrderBookEntry>> 类型,C++编译器无法自动在这两种类型间做转换,因此抛出错误。

解决步骤:

  1. 修改函数的返回类型定义
    将函数头的返回类型从 std::vector<OrderBookEntry> 改为 std::vector<std::vector<OrderBookEntry>>。
  2. 同步更新类头文件中的函数声明
    确保 AdvisorBot 类的头文件里,EntryCount 函数的返回类型也改成和定义一致的嵌套vector类型,否则会出现“声明与定义不匹配”的新错误。

修改后的代码示例:

/**function to get number of entries into an vector and pushback*/
std::vector<std::vector<OrderBookEntry>> AdvisorBot::EntryCount(std::string count,std::string tokens_string)
{
    //now use the tokenize func to get the string of each input
    std::vector<std::string> Tokens = CSVReader::tokenise(tokens_string, ',');

    std::string CountUserInput = count;
    int steps = std::stoi(CountUserInput);

    //pushback to entries vector of vectors
    std::vector< std::vector<OrderBookEntry> > Total_entries;

   
    for (int i = 0; i < steps; ++i) {
        if (i == 0) {
            Total_entries.push_back(AdvisorBot_orderBook.getOrders(OrderBookEntry::stringToOrderBookType(Tokens[1]), Tokens[0], currentTime));
        }
        else {
            currentTime = AdvisorBot_orderBook.getNextTime(currentTime);
            Total_entries.push_back(AdvisorBot_orderBook.getOrders(OrderBookEntry::stringToOrderBookType(Tokens[1]), Tokens[0], currentTime));
        }
    }
    return Total_entries;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:25:25