Я пишу класс Matrice (ради практики), и когда я написал метод умножения двух объектов Matrice я должен был проверить, если определенные условия для умножения матриц:Что вернуть из метода, если определенные условия не были выполнены?
Matrix Matrix::mul(const Matrix &mat)
{
if(col != mat.row)
//we cannot multiply in this case
else
{
//create temp object result
//perform multiplication
return result;
}
}
Теперь я любопытный что делать, если условие не выполнено, потому что еще в main.cpp я бы написать что-то вроде этого:
Matrix a = b.mul(c);
а что, если б и не может быть умножена, что я должен вернуться? Лучший способ выбросить исключение, чтобы просто заставить человека, использующего этот класс, отправлять совместимые матрицы, есть ли другой лучший способ?
возвращение 'std :: optional' или бросок. – Incomputable
Если ваши матрицы имеют фиксированный размер (и константы времени компиляции), вы можете перемещать размеры в параметры шаблона. Затем (если у вас есть подпись), компилятор не позволит вам умножать матрицы неправильных размеров :) – StoryTeller
Они динамически созданы, но спасибо – adadaae12313412