从这篇文章中,我看到您无法为指针重载运算符:C++: Operator overloading of < for pointers to objects
但是,我能否为boost指针重载运算符?例如:
尝试这样做时,我遇到了一个模糊的重载错误(它与内置的operator||(bool, bool)冲突)。有什么办法可以解决这个问题吗?
编辑:在下面添加更多详细信息,说明为什么我想这样做。
我会尽力说明我正在尝试的事情。我想为地图创建一个“验证器”对象,可以检查某些属性是否成立。例如:
稍后,要验证一个地图:
我认为我必须使用指针,因为我不能使用传值方式(由于我正在使用多态),也不能使用传递const引用的方式(因为嵌套运算符会创建临时对象,稍后在验证时将不存在)。
编辑:在此添加了一个与我的问题相关的新问题:有关在C++中创建稍后用于评估映射内容的表达式的实现建议?
boost::shared_ptr<ClassB> operator||(boost::shared_ptr<ClassA> lhs, boost::shared_ptr<ClassA> rhs) {
boost::shared_ptr<ClassB> returnVal = CreateClassBSharedPtr(lhs, rhs);
return returnVal;
}
尝试这样做时,我遇到了一个模糊的重载错误(它与内置的operator||(bool, bool)冲突)。有什么办法可以解决这个问题吗?
编辑:在下面添加更多详细信息,说明为什么我想这样做。
我会尽力说明我正在尝试的事情。我想为地图创建一个“验证器”对象,可以检查某些属性是否成立。例如:
boost::shared_ptr<MyValidator> my_validator = IsEmpty("key name 1") && IsNotEmpty("key name 2") || HasNElements("key name 3", num)
稍后,要验证一个地图:
if(my_validator.validate(some_map)) { ... }
我认为我必须使用指针,因为我不能使用传值方式(由于我正在使用多态),也不能使用传递const引用的方式(因为嵌套运算符会创建临时对象,稍后在验证时将不存在)。
编辑:在此添加了一个与我的问题相关的新问题:有关在C++中创建稍后用于评估映射内容的表达式的实现建议?