Название: Перегрузка операторов при наследовании Отправлено: qtkoder777 от Февраль 08, 2018, 16:31 Перехожу с самописных векторов на GLM.
Сейчас можно написать Код
А в glm::vec3 так нельзя, хочу унаследоваться и добавить функции совместимости. Код
На строку Код
пишет ошибку Код
Как так? Я перегрузил оператор - , он должен возвращать Vec3, а там есть Cross! Название: Re: Перегрузка операторов при наследовании Отправлено: Авварон от Февраль 08, 2018, 16:35 У вас оператор неконстантный, возможно в этом дело. В любом случае, применяется какой-то другой оператор, который возвращает базовый класс.
Вообще, бинарные операторы лучше делать свободными ф-иями, читайте майерса. Название: Re: Перегрузка операторов при наследовании Отправлено: qtkoder777 от Февраль 08, 2018, 17:03 У вас оператор неконстантный, возможно в этом дело. В любом случае, применяется какой-то другой оператор, который возвращает базовый класс. Вообще, бинарные операторы лучше делать свободными ф-иями, читайте майерса. Да, дело в этом, спасибо. А можно ли вообще не перегружать операторы? Я хочу чтоб они делали то же самое что в базовом классе. Тем более новых членов-данных нет. Название: Re: Перегрузка операторов при наследовании Отправлено: ViTech от Февраль 08, 2018, 17:48 А можно ли вообще не перегружать операторы? Если операторы не перегружать, то и возвращать они будут экземпляры базового класса. Вообще, в свежих стандартах С++ можно "использовать" конструкторы и операторы базового класса: Код но в данном случае это не поможет. Я хочу чтоб они делали то же самое что в базовом классе. Тем более новых членов-данных нет. Можете попробовать вызывать операторы базового класса: Код
Но лучше, действительно, может: Вообще, бинарные операторы лучше делать свободными ф-иями, читайте майерса. Название: Re: Перегрузка операторов при наследовании Отправлено: Авварон от Февраль 08, 2018, 19:43 Но лучше, действительно, может: Название: Re: Перегрузка операторов при наследовании Отправлено: qtkoder777 от Февраль 09, 2018, 10:08 Унаследоваться так и не удается.
Чего ему не хватает? Код
В кодах библиотеки показывает на Код
Название: Re: Перегрузка операторов при наследовании Отправлено: qtkoder777 от Февраль 09, 2018, 11:24 Конструктор копирования решил проблему
Код
Название: Re: Перегрузка операторов при наследовании Отправлено: Igors от Февраль 09, 2018, 13:01 Вообще, бинарные операторы лучше делать свободными ф-иями, читайте майерса. Не изучал (так, смотрел мельком), но в данном случае все к местуКод Второй и третий варианты не хуже, а лично мне поприятнее. Также обычно 2 варианта нормализации (с проверкой и без) Название: Re: Перегрузка операторов при наследовании Отправлено: Авварон от Февраль 10, 2018, 15:23 Вообще, бинарные операторы лучше делать свободными ф-иями, читайте майерса. Не изучал (так, смотрел мельком), но в данном случае все к местуА зря, например, такой код не будет работать без бинарного оператора ну никак. Код: Vec3 v1; |