如何从C++函数返回vector<vector<OrderBookEntry>>?编译错误解决
编译错误:no suitable user-defined conversion 解决方法
你的编译错误核心原因是函数返回类型声明与实际返回对象类型不匹配:
- 函数定义里声明返回的是
std::vector<OrderBookEntry>,但你实际要返回的Total_entries是std::vector<std::vector<OrderBookEntry>>类型,C++编译器无法自动在这两种类型间做转换,因此抛出错误。
解决步骤:
- 修改函数的返回类型定义
将函数头的返回类型从std::vector<OrderBookEntry>改为std::vector<std::vector<OrderBookEntry>>。 - 同步更新类头文件中的函数声明
确保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
相关产品推荐
相关产品推荐

