因此,我有一个名为WaterJug的自定义对象,在全局set<WaterJug>上调用函数时遇到错误:

这是在类定义之前定义的:

set<WaterJug> memo;

在我班上的一种方法中:

for(std::vector<WaterJug>::iterator newJug = newJugs.begin(); newJug != newJugs.end(); ++newJug) {
    const bool is_in = memo.find(newJug); //error here
    if (is_in) {

    }
}


错误是:No matching member function for call to 'find'

我必须在自定义类中实现任何接口才能使set操作起作用吗?

最佳答案

您有几个错误。


错误的参数传递给memo.find

memo.find(newJug) // tpe of newJug is an iterator, not an object.


它必须是

memo.find(*newJug)

memo.find()的返回值不是bool。它是一个迭代器。代替

const bool is_in = memo.find(newJug); //error here
if (is_in) {


采用:

if ( memo.find(*newJug) != memo.end() )

关于c++ - 设置操作不适用于自定义对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33307068/

10-11 22:55