相关疑难解决方法(0)

在一个类中使用带有成员函数的通用std :: function对象

对于一个类,我想在一个map存储std::function对象中存储一些函数指针到同一个类的成员函数.但是我在这个代码的开头就失败了:

class Foo {
    public:
        void doSomething() {}
        void bindFunction() {
            // ERROR
            std::function<void(void)> f = &Foo::doSomething;
        }
};
Run Code Online (Sandbox Code Playgroud)

我收到error C2064: term does not evaluate to a function taking 0 argumentsxxcallobj一些奇怪的模板实例化的错误结合.目前我正在使用Visual Studio 2010/2011在Windows 8上工作,在使用VS10的Win 7上工作也失败了.错误必须基于我不遵循的一些奇怪的C++规则.

编辑:我使用提升.这是集成在MS编译器中的C++ 11.

c++ function-pointers function tr1 c++11

147
推荐指数
5
解决办法
12万
查看次数

为什么C++中不存在引用成员?

在C++中,我可以在函数指针和函数引用之间进行选择(或者为了完整性,甚至是函数值):

void call_function_pointer (void (*function)()) {
    (*function) ();
}
void call_function_reference (void (&function)()) {
    function ();
}
void call_function_value (void function()) {
    function ();
}
Run Code Online (Sandbox Code Playgroud)

然而,当谈到方法时,我似乎没有在指针和引用之间做出这种选择.

template <class T> void call_method_pointer (T* object, void (T::*method)()) {
    (object->*method) ();
}
// the following code creates a compile error
template <class T> void call_method_reference (T& object, void (T::&method)()) {
    object.method ();
}
Run Code Online (Sandbox Code Playgroud)

这使我假设C++中不存在方法引用.真的吗?如果是,他们不存在的原因是什么?

c++ pointers reference pointer-to-member

35
推荐指数
1
解决办法
3003
查看次数