我是C++的新手,我試圖在模板中使用find_if,但似乎沒有按照我希望的方式工作。這是爲什麼?我試着在以前有關使用迭代器的模板問題中找到答案,但我想我錯過了正確的答案,或者只是沒有正確理解答案。我試圖在迭代器之前使用typename,但這並沒有改變錯誤信息。find_if()與模板?
有沒有更好的方法來做到這一點,如果有的話,有人可以幫助我學習如何做到這一點?
(錯誤消息:錯誤C3867: '的UserInterface ::編號':函數調用缺少參數列表中,使用 '&用戶接口::數' 來創建一個指針構件)=
當該發生了,我知道我已經錯過了()函數調用後,但這不是這種情況?!
#include <iostream> // std::cout
#include <algorithm> // std::find_if
#include <vector> // std::vector
template<typename T>
class UserInterface
{
public:
bool Number(int i);
void function();
};
template<typename T>
bool UserInterface<T>::Number(int i) {
return (i >= 40);
}
template<typename T>
void UserInterface<T>::function()
{
std::vector<T> myvector;
myvector.push_back(10);
myvector.push_back(25);
myvector.push_back(15);
myvector.push_back(55);
myvector.push_back(1);
myvector.push_back(65);
myvector.push_back(40);
myvector.push_back(5);
std::vector<T>::iterator it = std::find_if(myvector.begin(), myvector.end(), Number);
std::cout << "The first value over 40 is " << *it << '\n';
std::cin.get();
}
int main() {
UserInterface<int> fu;
fu.function();
return 0;
}
哪裏和如何?我以爲我嘗試過,但我想我只是不明白如何。 :) – StudentLerning
您應該將Number函數聲明爲「static」。 – VTT
A)考慮使用lambda:'[](imt i){return i> = 40; }'b)'std :: vector myvector v = {10,25,...,5};' –
Borgleader