私は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)ラムダの使用を検討してください: '[](imt i){return i> = 40; } 'B)' std :: vector myvector v = {10、25、...、5}; ' –
Borgleader