检查memberfunction是否返回临时对象或数组对象

时间:2018-03-19 09:36:51

标签: c++

我有一个类对象数组,想要检查我试图添加的对象是否已经存在于数组中。比较是通过uniqueIDString完成的。如果比较为真,我想返回匹配的对象,如果不是,我想返回该类的新实例。

    Classobject stock::checkIfItemExists(Classobject object) {
       for(int i = 0; i < stock.getSize(); i++) {
          if(compareUniqueIDs(object, stock[i]) {
               return stock[i]; 
          }
       }
       return Classobject{} // no similar item found, return new Classobject
   }

是否有可能调用函数可以区分arrayelement(stock[i])的返回值和新创建的类对象(Classobject{})的返回值?

1 个答案:

答案 0 :(得分:1)

除非您将某些信息灌输到Classobject{}实例中,否则调用者将无法区分。

一种老式的,但仍然有效的处理方法是将返回类型更改为

std::pair<bool, Classobject>

并返回true作为对中的第一项,例如,是否创建了对象。从C ++ 17开始,更现代的方法是将返回类型更改为

std::optional<Classobject>

参考:http://en.cppreference.com/w/cpp/utility/optional