尝试使用对象引用绑定函数时出现功能错误

时间:2015-07-09 05:10:53

标签: c++11

这是我的代码:

void funct(carl& c){
    std::cout<<"test"<<std::endl;
}


int main(int argc, char** argv) {


    carl c;
    auto f = std::bind(funct,&c);
    std::packaged_task<void()> task1( f );   // error

    //std::packaged_task<void()> task1( std::bind(funct,carl()) ); this one worked though

    return 0;
}

我正在尝试绑定一个函数并使用carl c作为参数(&amp; to reference)。不知怎的,当我尝试complile时,我得到功能错误。 (为了测试,卡尔只是一个空洞的课程。)

[error] no type named 'type' in class std::result_of...

但是,如果生病必须使用carl(),但我想使用现有的carl实例

1 个答案:

答案 0 :(得分:1)

那是因为你的函数需要引用一个对象,并且你正在传递一个指针。正确的绑定方式是

auto f = std::bind(funct,std::ref(c));

更新:实际上,更正确的方法是

{{1}}