float& Matrix_Row::get(const unsigned int &row_indx, const unsigned int &column_indx){
Matrix_Column* temp = head;
while(temp){
if(temp->row_indx == row_indx){
return temp->get(column_indx);
}
temp = temp->next;
}
// add default return not found
}
有没有什么方法可以返回0,而不必创建特定的变量...比如有没有一种NULL值可以返回。
所以我可以在原始类中创建一个'NOT-FOUND'常量值,然后当调用这个函数时,我只是将该值作为参数添加,然后如果找不到它,我就返回该参数值;但是,我并不想这样做,因为它可能与数据变量值冲突。例如:我可以返回-1,但实际上数据值是-1,这样我就不能区分它是成功还是失败。
谢谢
2条答案
按热度按时间9o685dep1#
return -〉数据对〈bool,float〉
这样我可以检查是否找到了一个值,如果没有找到,我也可以添加任何默认的浮点值。
不是最佳解决方案,因为它将比使用可选
deyfvvtc2#
问题是你是通过引用返回的。通过引用返回告诉这个方法的任何用户它将总是返回一个有效值。显然,你试图返回“NOT-FOUND”,表示没有有效值,这违反了这个规则。引用仅仅是永远不能为空的指针。指针只是指向其他现有的变量,但它们可以为空;不指向任何东西。null通常是一个很好的指示符,用于“未找到”。
一个简单的规则可以同时适用于参数和返回值:
因此,请像这样重写方法:
然后调用代码可以检查nullptr的返回值作为其“NOT-FOUND”指示符。另外,我不确定
return temp->get(column_indx);
返回的是什么,但是您可能需要修改它以确保它返回的是float*
。如果它返回的是引用,那么您可以执行return &temp->get(column_indx);
以支持上述更改