gpt4 book ai didi

c++ - 无法在 C++ 中编译 min_element

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:59 27 4
gpt4 key购买 nike

这是我的代码:

#include <algorithm>
#include <vector>
#include <string>
using namespace std;
class A {
struct CompareMe {
bool operator() (const string*& s1, const string*& s2) const { return true; }
};
void f() {
CompareMe comp;
vector<string*> v;
min_element(v.begin(), v.end(), comp);
}
};

这是错误:

error: no match for call to ‘(A::CompareMe) (std::string*&, std::string*&)’
test.cpp:7: note: candidates are: bool A::CompareMe::operator()(const
std::string*&, const std::string*&) const

我觉得有一些语法缺陷,但无法找出是哪一个。请帮忙!

最佳答案

您放置的 const 是错误的。 A T*& cannot be implicitly converted to a const T*& .尝试

bool operator() (const string* const& s1, const string* const& s2) const { ...
// ^^^^^ ^^^^^

相反。


或者只是按值传递(感谢 Mike):

bool operator() (const string* s1, const string* s2) const { ...

如果编译器使用标准 ABI,这对于像指针这样的简单对象会更有效。

关于c++ - 无法在 C++ 中编译 min_element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2903804/

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