C++ 报错 C3867:非标准语法;使用 '&' 创建指向成员的指针 - 解决方法
C++ 报错 C3867:'非标准语法;请使用 "&" 来创建指向成员的指针' - 解决方法
在使用 sort 函数对自定义结构体进行排序时,如果遇到 'C3867: 'if_duplicate::cmp': 非标准语法;请使用 "&" 来创建指向成员的指针' 错误,通常是因为 cmp 函数的调用方式不正确导致的。
**错误代码示例:**cppbool if_duplicate::cmp(const struct my_type& a, const struct my_type& b){ return a.data < b.data;}// ... 在 sort 函数中调用 cmpsort(solu.begin(), solu.end(), if_duplicate::cmp);
解决方法:
您可以通过以下两种方式解决该错误:
方法一:将 cmp 方法改为静态成员函数
将 cmp 方法声明为 if_duplicate 类的静态成员函数,并使用 & 符号创建指向该函数的指针。cppclass if_duplicate {public: // ... static bool cmp(const struct my_type& a, const struct my_type& b) { return a.data < b.data; }};// ... 在 sort 函数中调用 cmpsort(solu.begin(), solu.end(), &if_duplicate::cmp);
方法二:将 cmp 方法改为普通的全局函数
将 cmp 方法移出 if_duplicate 类,使其成为一个全局函数。cpp// 全局函数bool cmp(const struct my_type& a, const struct my_type& b) { return a.data < b.data;}// ... 在 sort 函数中调用 cmpsort(solu.begin(), solu.end(), cmp);
总结:
通过将 cmp 方法声明为静态成员函数或全局函数,并使用正确的语法调用,可以解决 'C3867: '非标准语法;请使用 "&" 来创建指向成员的指针' 错误,并成功使用自定义比较函数对结构体进行排序。
原文地址: https://www.cveoy.top/t/topic/Vvv 著作权归作者所有。请勿转载和采集!