我有一个类对象数组,想要检查我试图添加的对象是否已经存在于数组中。比较是通过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{}
)的返回值?
答案 0 :(得分:1)
除非您将某些信息灌输到Classobject{}
实例中,否则调用者将无法区分。
一种老式的,但仍然有效的处理方法是将返回类型更改为
std::pair<bool, Classobject>
并返回true
作为对中的第一项,例如,是否创建了对象。从C ++ 17开始,更现代的方法是将返回类型更改为
std::optional<Classobject>