2017-08-11 68 views
0

我創建了調用MyClass的構造函數,我的類被定義爲ref類Myclass密封並且此函數被定義爲publiccreate_task調用ref類的密封構造函數給出'create_task':沒有匹配的重載函數找到

IAsyncOperation<MyClass^>^ MyNameSpace::MyClass::CreateAsync() 
{ 
    return create_task(MyClass()).then([](MyClass^ objectx) 
    { 
     return ref new MyClass(); 
     //return std::make_shared<MyClass>(); 
    }); 
} 

這是給我一堆錯誤,如:

Error C2672 'Concurrency::details::declval': no matching overloaded function found 

Error C2770 invalid explicit template argument(s) for '_Ty &&Concurrency::details::declval(void)' 

Error C2672 'Concurrency::details::_FilterValidTaskType': no matching overloaded function found 

Error C2672 'create_task': no matching overloaded function found 

回答

0

你的構造不是一個異步操作因此不能用作參數create_task。如果它需要很長的時間,你要運行的構造函數作爲任務,使用create_async代替。

create_async takes a function-like object (eg a lambda) and runs it as a task

從你上面的例子:

IAsyncOperation<MyClass^>^ MyNameSpace::MyClass::CreateAsync() 
{ 
    return concurrency::create_async([] 
    { 
     return ref new MyClass(); 
    }); 
} 

這將加速旋轉運行拉姆達(它構造你的類)的計劃任務,然後把它包裝在WinRT中IAsyncOperation<>,您可以使用。因爲你的構造並不做任何事情,我不知道爲什麼你希望它是異步的,但(除非你省去一堆昂貴的電話)。

+0

請你解釋一下? 我的構造函數是: '了myNameSpace :: MyClass的MyClass的::() \t:參數1(視窗:圖形::成像:: BitmapSize {0U,0U}), \t參數2(視窗:圖形::成像:: BitmapSize {0U,0U}) { }' 我應如何進行這種類型的常量呢? -Thanks –

相關問題