转换构造函数,该怎么处理

转换构造函数
我有一个查找函数,返回自定义类型的引用,那么我想通过判断,当vector中有要找的对象时,返回该对象的引用,当没有要找的元素时,返回NULL

那么请问大家怎样把NULL转换成自定义类型呢?这个转换构造函数该怎么写?谢谢大家


------解决方案--------------------
引用不可以是NULL,所以你的问题没有直接的解决方案,干脆放弃之并重新修改设计是明智的。

退而求其次的话,可以考虑:
(1)改为返回指针(最简单的);
(2)通过参数带出返回值,而将返回值改为bool类型以表示查找是否成功;
(3)为你的自定义类型指定一个可以视为NULL的状态,比如能过一个isValid函数,而内部保存一个相当的变量,或类型的;
(4)加一个函数参数,让用户指定如果失败时,返回哪个对象;
(5)使用NullObject模式,定义一个派生类,所有的函数都是啥也不做的空函数,需要时返回这个派生类对象一引用。但如果你的类中有非虚函数或非private的成员变量就不灵了。

最后还有一种,就是类似于:
A& getA() {
return *reinterpret_cast <A*> (0);
}
但对于这种,每一次返回一个对象后,要立刻检查其有效性:
A& a = getA();
if(0 == &a) {...}
并且对返回值只能用引用或指针接收,千万不可对返回值进行拷贝接收。
但这种毕竟太危险,而且你记得不见得维护代码的人都记得,而且引用相对于指针的一些优点也全部丧失怠尽,真不如直接用指针。还有,我不清楚这种方式是不是portable的,只能说有的编译器是可以。