好吧,我有这个函数重载:
static bool returnNull;
void* operator new(const std::size_t size, const std::nothrow_t&) noexcept
{
void* address{ nullptr };
if (!returnNull)
{
address = operator new(size);
}
return address;
}
我想做一些像:
void* operator new(const std::size_t size, const std::nothrow_t&) noexcept
{
if (typeObject == AnimalClass)
return nullptr;
void* address{ nullptr };
if (!returnNull)
{
address = operator new(size);
}
return address;
}
所以,我需要这个功能来单元测试一个有很多新调用的构建器,所以我想基于应该被分配的类失败一个特定的分配
您的代码可以通过new
运算符重载类AnimalClass
来实现:
class AnimalClass
{
public:
#ifdef UNIT_TEST
void* operator new(size_t)
{
return nullptr;
}
#endif
};
您可以使用#ifdef
预处理程序指令将代码保留在测试之外。在标题之前定义UNIT_TEST
包括。