首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::异步返回值。未知误差

std::异步返回值。未知误差
EN

Stack Overflow用户
提问于 2013-09-26 09:20:15
回答 1查看 1.1K关注 0票数 0

我正在使用c++中的windows。我试着检查右手是否从右转到左肩,就像擦拭一样。我尝试使用std::异步,因为我需要该方法的返回值。我已经搜索了我得到的错误,不知道是怎么回事。

我使用的两种方法:

代码语言:javascript
复制
   bool NuiSkeletonStream::timeNext(clock_t start)
{
    clock_t end, diff;

    end = clock();
    diff = end - start;

    while(diff <= 1500)
    {
        if(diff >= 1500)
        {
            if(i_rhx == i_lsx && i_rhy == i_lsy)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            diff = end - start;
            end = clock();
        }
    }
}

bool NuiSkeletonStream::runNext()
{
    clock_t start;

//  std::thread compare(timeNext(start),std::move(xNext));
    for (int i = 0; i < NUI_SKELETON_COUNT; i++)
    {
        if (m_skeletonFrame.SkeletonData[i].eTrackingState == NUI_SKELETON_TRACKED)
        {
            i_rhx = m_skeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT].x*5+5;
            i_rhy = m_skeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT].y*5+5;
            //i_rhz = (m_skeletonFrame.SkeletonData[i].SkeletonPositions[11].z*10)-10;
            i_rsx = m_skeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_SHOULDER_RIGHT].x*5+5;
            i_rsy = m_skeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_SHOULDER_RIGHT].y*5+5;
            i_lsx = m_skeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_SHOULDER_LEFT].x*5+5;
            i_lsy = m_skeletonFrame.SkeletonData[i].SkeletonPositions[NUI_SKELETON_POSITION_SHOULDER_LEFT].y*5+5;

            if(i_rhx == i_rsx && i_rhy == i_rsy)
            {
                start = clock();
                auto f1 = std::async(timeNext(start));

            }
        }
    }

我有以下错误:

代码语言:javascript
复制
Error   24  error C2440: 'return' : cannot convert from 'std::_Do_call_ret<_Forced,_Ret,_Funx,_Btuple,_Ftuple>::type' to '_Ret'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-26 09:23:49

带着表情

代码语言:javascript
复制
std::async(timeNext(start));

实际上,您自己调用了timeNext,并将其返回值( bool)传递给std::async

如果您看到例如本参考,您将看到std::async函数将函数作为第一个参数,然后是函数的参数。

所以你应该这么做

代码语言:javascript
复制
std::async(&NuiSkeletonStream::timeNext, this, start);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19024186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档