Я использую Visual C++ 2013.C++ 11 Переназначение удалить, не затрагивая = удалить
мне нужно пересмотреть мое удаление ключевого слова (еще один инструмент управления памятью)
#define delete foo(SOME,PARA,METERS), delete
Цель состоит в том, чтобы перенаправить удалите переопределенную версию моей, но у меня есть проблема при использовании ключевого слова «= delete» или с использованием внешнего кода.
Class Something {
public:
Something() {}
Something(const Something &) = delete;
}
Примечание: VC13 дает следующие ошибки:
error C2061: syntax error : identifier 'instance'
error C2238: unexpected token(s) preceding ';'
Вопрос
Есть ли способ, чтобы переопределить удалить, не затрагивая = удалить?
Notes (издание)
Переопределение ключевого слова действительно что-то, чтобы обращаться с осторожностью и, вероятно, можно избежать еще одной конструкции практически в любом случае. Я уже в полной мере осознает, что и я не прошу обходной. Смотрите этот вопрос скорее как исследование, чем фактическое развитие производства.
Это, как говорится, я просто хочу обсуждать здесь вопрос, что у нас есть ключевое слово, имеющее два различных значения в двух различных ситуациях.
Таким образом, вопрос просто об определении удаления при использовании в качестве операции освобождения, а не в качестве знака «нет реализации».
'#define удалить ...' звучит как плохая идея. – erip
Внедрите 'operator delete' вместо использования MACRO. – Jarod42
Почему вы не хотите использовать 'operator delete()' вместо этого. Это кажется более ожидаемым ... –