gpt4 book ai didi

c++ - std :find function 过载

转载 作者:行者123 更新时间:2023-11-28 01:00:18 26 4
gpt4 key购买 nike

我试图以这种方式重载 std::find 函数:

include <list>
include <string>
include "Marker.h"

namespace Test {



class MarkerContainer {

private:
std::list<Marker*> list;
double end_t;
inline bool exists(std::list<Marker*> *input_list, Marker* check);
public:

MarkerContainer();
MarkerContainer(double end_time);
bool addMarker(Marker* input);
double computeBeatTime(double sample_t);
double computeSampleTime(double beat_t);
void printAll();

};

}


std::list<Ableton::Marker*>::iterator std::find(std::list<Ableton::Marker*>::iterator first, std::list<Ableton::Marker*>::iterator last, Ableton::Marker* value){
for ( ;first!=last; first++) if ( **first==*value ) break;
return first;

}

但是我发现了这个编译器错误:

Out-of-line definition of 'find' does not match any declaration in namespace 'std' in /Users/.../MarkerContainer.h

我希望我犯了一些愚蠢的错误,我想做的很简单..有什么想法吗?

提前致谢!彼得罗

最佳答案

不允许重载 find。您可以在 std 命名空间中专门化模板,但在这种情况下,将 find_if 与解引用仿函数一起使用要简单得多。

// Create DerefEquality comparison (I'll try to come back later and write it).
container_type::iterator iter = find_if(container.begin(), container.end(), DerefEquality(item_to_find));

关于c++ - std :find function 过载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9105237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com