代码之家  ›  专栏  ›  技术社区  ›  Vedant Yadav

用C编写处理无效输入的函数++

  •  0
  • Vedant Yadav  · 技术社区  · 2 年前

    在C++中,如果输入无效,如何处理函数输出。比方说,我正在写一个函数来乘以两个矩阵。如果两个矩阵不能相乘(由于形状兼容),该如何处理?

    我试着使用 std::optional ,但随后又产生了其他问题。由于输出预期为std::optional(Matrix),因此我必须编写类中的所有其他函数(如print Matrix()),并将预期输出设为std::optional,这似乎是不必要的。

    2 回复  |  直到 2 年前
        1
  •  0
  •   RoyA    2 年前

    我觉得这会很有趣。只需将“有效”属性添加到矩阵中,并仅在需要时进行检查!

    class Matrix
    {
    public:
        Matrix Multiply(Matrix other)
        {
           return Multiply(other, m_isValid);
        }
    
        bool IsValid()
        {
            return m_isValid;
        }
    
    private:
        bool m_isValid;
        Matrix Multiply(Matrix other, bool& isValid);
    };
    
        2
  •  0
  •   Rai Muhammad Tabish    2 年前

    在尝试将两个矩阵相乘之前,请确保第一个矩阵的列数与第二个矩阵的行数相匹配。如果不满足此条件,则引发异常。