Возможно ли наследовать идентично именованный оператор, который отличается только по типу возврата, от двух разных абстрактных классов. Если да, то они:Сложное наследование C++ с идентично указанным оператором
, что синтаксис для реализации операторов
, что синтаксис для использования/разрешающих операторов
, что накладные расходы в общем случае такой же, как для любая другая виртуальная функция?
, если вы можете предоставить мне ссылку или пример кода, который был бы полезен
благодаря
12struct abstract_matrix { 13 virtual double& operator()(int i, int j); 14}; 15 16 struct abstract_block_matrix { 17 virtual double* operator()(int i, int j); 18 }; 19 20struct block_matrix : abstract_matrix, abstract_block_matrix { 21 22};
блочная матрица должна обеспечить реализацию для обоих операторов, так что это либо матрица или матрица блоков, в зависимости от контекста. Я не знаю, как обеспечить реализацию, специфичную для класса block_matrix. прямо сейчас, это делается путем передачи объекта wrapped type в качестве последнего аргумента, но это не кажется очень чистым. Я хотел бы сохранить чистую матричную нотацию.
Что вы подразумеваете под «виртуальными классами»? Вы имеете в виду виртуальное наследование? Образец кода того, что вы имеете в виду (даже если он не компилируется), будет полезен. –