Нет.ref
по-прежнему относится к me
, который будет уничтожен в конце вызова.
Вы должны вернуть копию своего результата (без префикса &
).
MatrizEsparsa MatrizEsparsa::operator+(const MatrizEsparsa& outra) const {
return MatrizEsparsa(outra.linhas(),outra.colunas());
}
Я также добавил два спецификатора const
(к параметру и методу), поскольку я сомневаюсь, что outra
или вызывающий экземпляр необходимо изменить в этом случае.(Я могу ошибаться, но тогда ваш operator+
будет иметь странную семантику)
Делая то, что вы сделали, вы просто сделали код более сложным.Компилятор, вероятно, был сбит с толку и не мог предупредить вас о вашей возможной ошибке.
Обычно, когда вам приходится использовать хитрые трюки, чтобы делать простые вещи, это означает, что что-то не так.