Re: Forward declarations and covariate return types
Quote:
Originally Posted by
cooperised
I'd like to take the opportunity to respond to the emerging debate about whether this workaround is necessary because of failings in my design. I would, in general, wholeheartedly agree with Graham's dictum - but not always.
All the aphorisms I work by come with the caveat: "but there will be pathological cases".
Quote:
Originally Posted by cooperised
[...]For those who are interested, the reason that the 'getTranspose()' method is virtual is that the much-simplified inheritance tree I presented when asking my original question is part of a larger one that includes non-square, square, symmetric, and diagonal matrices. Transposition is a valid operation for all of these types, but since their implementations vary widely for efficiency (interface and implementation are kept well separated) the transpose operation must be virtual.
I had considered that that may well be the case, but I thought that it was worth pointing out, anyway - we've had plenty of cases on here of people heading off in entirely the wrong direction, because they haven't stopped to consider if what they're doing makes sense. I wasn't suggesting that you hadn't, but it was necessary to consider the possibility, given the information supplied.