के लिए ptr_fun निम्नलिखित पर विचार करें:का उपयोग std :: एक सदस्य समारोह
class A
{
public:
bool is_odd(int i)
{
return (i % 2) != 0;
}
void fun()
{
std::vector<int> v2;
v2.push_back(4);
v2.push_back(5);
v2.push_back(6);
// fails here
v2.erase(std::remove_if(v2.begin(), v2.end(), std::not1(std::ptr_fun(is_odd))), v2.end());
}
};
ऊपर कोड is_odd()
के प्रभाव नकारना है क्योंकि यह एक सदस्य समारोह है विफल रहता है। std::ptr_fun()
पर कॉल विफल रहता है।
मैं इसे कैसे काम करने के लिए बना सकता हूं? कृपया ध्यान दें कि मैं एक गैर स्थैतिक सदस्य समारोह होने के लिए is_odd()
चाहता हूं।
'is_odd' एक स्थिर कार्य करें? या एक गैर-सदस्य समारोह? सदस्य समारोह होने का कोई कारण नहीं है। –
@HappyCoder: इसे तब एक स्थिर सदस्य फ़ंक्शन बनाएं। –
आप एक मज़ेदार वर्ग लिख सकते हैं जो * [इस] (int n) के प्रकार {return is_odd (n);} 'स्वयं' है और इसका उपयोग करें। –