那么我有这个函数重载:
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;
}
因此,我需要此功能来对具有许多新调用的构建器进行单元测试,因此我想使基于应分配的类的特定分配失败
答案 0 :(得分:0)
new
类AnimalClass
的操作符重载可以实现代码的作用:
class AnimalClass
{
public:
#ifdef UNIT_TEST
void* operator new(size_t)
{
return nullptr;
}
#endif
};
您可以使用#ifdef
预处理程序指令将代码保留在测试范围之外。在标头包含之前定义UNIT_TEST
。