(Я просканировал, но не смог найти ничего похожего, если обман, пожалуйста, закройте).
Есть ли способ предотвратить это два оператора от наследования? Например:
struct foo{
static void* operator new(std::size_t) {
// special
}
static void operator delete(void* p, std::size_t) {
// special
}
};
struct bar : public foo {
};
Теперь bar
унаследует два оператора - в этом тривиальном случае, не такой большой проблемой, возникает проблема, если в foo
и bar
(и еще хуже в моем случае, поскольку выделение для foo
должно выполняться иначе, чем bar
!) Теперь способ избежать этого заключается в том, что в bar
я бы тоже реализовал операторы. Однако, если есть много производных типов, вероятность того, что вы забудете что-то переопределить, вполне возможна. Итак, вопрос в том, есть ли способ предотвратить использование этих операторов унаследовано?
ПРИМЕЧАНИЕ: c ++ 03 (и готов принять какое-то решение, специфичное для компилятора, если оно специфично для gcc)