我以前在return语句中返回了2个项目,但是我必须对其进行修改,以便可以返回3个项目,我对代码做了一些更改,这看起来像
declare @SALE_DETAIL table([ORDER_NUMBER] [varchar](50) NULL,
[ITEM_NAME] [varchar](250) NULL,
[QUANTITY] [int] NULL,[PRICE] [numeric](18, 0) NULL,[Status] [varchar](50) NULL)
INSERT @SALE_DETAIL ([ORDER_NUMBER], [ITEM_NAME], [QUANTITY], [PRICE], [Status]) VALUES
(N'SO-100-ORD-19', N'Double Bed', 5, CAST(70000 AS Numeric(18, 0)), N'A'),
(N'SO-100-ORD-19', N'Sofa', 5, CAST(10000 AS Numeric(18, 0)), N'A'),
(N'SO-100-ORD-19', N'Dining Table', 1, CAST(50000 AS Numeric(18, 0)), N'A'),
(N'SO-100-ORD-19', N'Sofa', 5, CAST(10000 AS Numeric(18, 0)), N'D')
select Order_number,Item_name,Quantity,Price
from @SALE_DETAIL
where Status = 'A'
except
select Order_number,Item_name,Quantity,Price
from @SALE_DETAIL
where Status = 'D'
但这会引发类似错误
std::pair<int, std::pair<std::string, std::string>> get(InputValidator inputValidator){
std::string imageURL = inputValidator.url();
Requests requests;
cv::Mat image = requests.downloadImageFromURL(imageURL);
if(image.empty())
return std::make_pair(0,empty, "");
try{
std::vector<std::string> elements;
cv::Mat croppedFI = rotated_f(image);
std::string returnFP = rotated_F(image);
elements.push_back(returnFP);
std::string uploadUrl = requests.uploadImageToURL(APP.uploadURLSilo, cropped);
elements.push_back(uploadUrl);
// return elements[0], elements[1];
return std::make_pair(0, uploadUrl,returnFP);
回溯继续,但大多数情况下看起来都是相同的错误。
我的c ++并不是很好,任何想法都将真正有用。谢谢。
答案 0 :(得分:12)
您可以通过编写错误来解决
return std::make_pair(0, std::make_pair(uploadUrl,returnFacePoints));
但是,顾名思义,std::pair
并不是用来容纳三件东西的。 std::tuple
的存在可用于组合任意数量的事物:
return std::make_tuple(0, uploadUrl, returnFacePoints);
函数的返回类型就是
std::tuple<int, std::string, std::string> get(InputValidator inputValidator){
请注意,这并不是C ++中的最佳实践。函数的用户不知道第一个返回的std::string
是上传URL,而另一个是关于面部点的-即使他们知道,也很容易混淆两者。是的,其他语言也可以这样做,但是它们的代码库往往较小。