Рассмотрим следующий объект с 1 членной переменной и 2 конструкторами.Шаблоны проектирования для создания объектов со свойствами, которые могут быть const или не const
MyObject {
const [or not] HasAnotherObject *m_pOtherObject;
MyObject(HasAnotherObject *pOtherObject);
MyObject(const HasAnotherObject *pOtherObject);
}
Я хочу создать экземпляр не const и const MyObject. Переменная-член также должна иметь тот же статус константы, что и локальная переменная.
MyObject myObjectVolatile(HasAnotherObject *pOtherObject);
const MyObject myObjectConst(const HasAnotherObject *pOtherObject);
Однако шаблон класса должен указывать статус const, не соответствующий методу создания экземпляра.
Есть ли шаблон дизайна, который может здесь помочь?
'propagate_const'? –
В настоящее время я использую это решение: переменных один Неконстантный член: 'HasAnotherObject * m_pOtherObject' и 2 методы: Const HasAnotherObject hasAnotherObject() {} константный и HasAnotherObject hasAnotherObject() {} и 2 конструкторы с сопзЬ и не -const. Константа должна сделать неприятное преобразование для удаления const. –
привет Никки! благодаря! Я искал propate_const. понял. это решение использует шаблоны C++, которые являются одной из вещей, которые я рассматривал. это добавляет значительную сложность в определение класса. но поддерживает чистую и правильную реализацию. это будет еще один вариантом использования шаблонов непосредственно я хотел бы предложить: Const MyObject() Проблемы есть, конечно, что вы всегда должны соответствовать шаблону с локальными переменными Устами. –