私は C++ の学習に取り組んでいますが、メソッドを別のメソッドのパラメーターとして渡すことができるかどうか疑問に思っていましたか?
私がやりたかったことの大まかな概要は次のようなものです:
void insertionSort() {
//perform sort
}
int timeOfOperation(methodInQuestion) {
// time 1
methodInQuestion;
//time 2
return time2-time;
}
int main() {
cout << timeOfOperation(insertionSort());
return 0;
}
このようなことをする方法はありますか?
編集:
返信ありがとうございます。別の質問があります。私の実際のコードでは、これはすべて dataStructure というクラスで行われており、別の場所でそのインスタンスを作成してこれらのメソッドを呼び出しています。
dataStructure ds();
ds.timeOperation(ds.insertionSort());
投稿されたソリューションのいくつかを実装しようとすると、次のエラーが発生します。
IntelliSense: no instance of function template
"dataStructure::timeOperation" matches the argument list argument
types are: (void) object type is: dataStructure
インスタンスの作成がこれに影響する理由がよくわかりません。誰でも説明できますか?
================================================== ===========
編集2:
この部分の正確なコードを多かれ少なかれ投稿します。
//main.cpp
#include "arrayList.h"
#include "arrayListStructure.h"
#include "Person.h"
using namespace std;
int main() {
arrayList<Person> *al = new arrayList<Person>(length);
arrayListStructure als(al);
//als.fillStructure(data);
als.timeOperation(als.insertionSort());
return 0;
}
//arrayListStructure.cpp
#include "arrayListStructure.h"
#include <functional>
double arrayListStructure::timeOperation(std::function<void()> operation) {...}
void arrayListStructure::insertionSort() {...}
arrayListStructure::arrayListStructure(arrayList<Person> *al)
{
this -> al = al;
}
もっとありますが、これが問題に関連するすべてだと思います