相关疑难解决方法(0)

装饰器的类方法

假设我有一个函数(装饰器)来测量给定函数的持续时间:

#include <unistd.h>

void measure(void (*f)()) {
    time_t tBegin = time(NULL);
    f();
    time_t tEnd = time(NULL);
    cout << "Duration: " << (tEnd - tBegin) << " sec" << endl;
}
Run Code Online (Sandbox Code Playgroud)

我想测量一个类的方法的持续时间.例如:

class Myclass {
private:
    double _d;

public:
    Myclass(double d) : _d(d) {}

    void run() {
        measure(m);
    }

    void m() const {
        usleep(1000000 * _d);
    }
};

int main() {
    Myclass obj(2.0);
    obj.run();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这样的实现会导致错误:

error: invalid use of non-static member function
Run Code Online (Sandbox Code Playgroud)

有没有一种方法在C++中正确实现它?它应该不修改外部函数measure,并且测量的方法完全是非静态的(它使用实例的数据).测量应该在方法内部run.

我需要C++ …

c++

6
推荐指数
1
解决办法
644
查看次数

标签 统计

c++ ×1