我正在尝试使用一个函数来创建测量类,该函数将函数作为参数进行度量。其所谓的ChronoTimer.h内容是:带有可变参数的函数作为函数C++的参数
#include <chrono>
template<typename TimeT = std::chrono::milliseconds, class ClockT =
std::chrono::system_clock>
class ChronoTimer {
public:
template<typename F, typename ...Args>
static typename TimeT::rep duration(F func, Args&&... args)
{
auto start = ClockT::now();
func(std::forward<Args>(args)...);
return std::chrono::duration_cast<TimeT>(ClockT::now() - start);
}
};
然后,我有“SomeClass的”哪里是我想要测量的功能,和功能,我想测量
#include "ChronoTimer.h"
long int someClass::measuredF(long end) {
long int cnt = 0;
for (long int i = 0; i < end; ++i) {
cnt = cnt + i;
}
return cnt;
}
void someClass::someFunction() {
long int end = 10;
auto duration = ChronoTimer<>::duration(someClass::*measuredF, end).count();
}
有一个错误的函数并且我没有足够的C++知识来获得它的工作。感谢任何帮助,谢谢
开始与更换'SomeClass的* ::通过'measuredF'&SomeClass的:: measuredF' –
你好彼得,感谢您的回复。我改变了你的建议,但我仍然得到很多错误,如: '错误:成员参考基本类型'typename duration> :: rep'(又名'long long')不是结构或结合 自动持续时间= ChronoTimer <> :: duration(&someClass :: measuredF,end).count();' –
xrep
我假设'measuredF'不是静态的... – Jarod42