我正在重构的代码中具有以下形式的功能:
A f()
{
if(existing)
return A();
else
return A(handle);
}
Safe Bool Idiom 稍后用于测试 A 是否与句柄相关联,即我们是否应该调用该对象的类方法,这些方法在内部需要一个有效的句柄才能执行。A 的方法是 const。
我想在这里返回一个接口 IA。因此我必须返回一个指针吗?如果是这样,我将使用 boost 共享指针。我可以测试指针是否指向某个东西。
我有什么办法可以在这里使用参考资料吗?您会推荐这种方法还是您认为 boost::shared_ptrs 是要走的路?
更新
A源自IA。
我的编译器是 gcc 版本 4.4.3。
我对这段代码最大的问题是 A 用于与外部 C API 交互。因此,我希望使用 IA 接口作为我的 Mock of A 及其实现 A 的基础来模拟它。然后在上面的方法 f() 之外,我将其视为工厂,我将只使用 IA 指针。换句话说,依赖注入。
所以 A 基本上是一个句柄和一组需要句柄的 C API 函数的接口。我可以有几个 A 类型的对象,其中接口相同但句柄不同。