オペレータnewで使用するために、グローバルを使用せずにクラスに依存する方法を教えてください。クラスオペレータオーバーロードクラスオペレータnew with dependency
私が正しく理解している場合、誰かが自分のタイプのインスタンスを作成するたびに動作をカスタマイズしたい場合は、newメソッドをクラスメソッドとしてオーバーロードする必要があります。そのクラスメソッドは静的であるかどうかにかかわらず静的です。
私はクラスがある場合:
class ComplexNumber
{
public:
ComplexNumber(double realPart, double complexPart);
ComplexNumber(const ComplexNumber & rhs);
virtual ~ComplexNumber();
void * operator new (std::size_t count);
void * operator new[](std::size_t count);
protected:
double m_realPart;
double m_complexPart;
};
をし、私は割り当てを行うために作成されたカスタムメモリマネージャを使用したい:
void * ComplexNumber::operator new (std::size_t count)
{
// I want to use an call IMemoryManager::allocate(size, align);
}
void * ComplexNumber::operator new[](std::size_t count)
{
// I want to use an call IMemoryManager::allocate(size, align);
}
どのように私はIMemoryManagerのインスタンスを利用可能にしますグローバルを使わずにクラスに?
私にとってはそう思わないため、クラスが特定のグローバルインスタンスに緊密に結合されているような悪いデザインを強制します。