読者です 読者をやめる 読者になる 読者になる

C++を使った初めてのMetroスタイルアプリでRSSリーダーでもつくってみなよ その3

エラーで悩んで週が明けました.


と,今日の朝こういう記事を発見しました.
先週の時点ではなかった記事!
16日付,そしてGoogleの検索結果には16時間前という表示.

チュートリアル2をやってみた | S.F.Page

なんと,チュートリアルにミスがあるという.
2点..
C++の基礎しかやったことのない初心者のおれには気づかなかった...

一つ目は

    .then( [this] (concurrency::task<SyndicationFeed^> t)
    {
        try
        {
            t.get();
        }
        // SyndicationClient throws E_INVALIDARG 
        // if a URL contains illegal characters.
        catch(Platform::InvalidArgumentException^ e)
        {
            // TODO handle error. For example purposes
            // we just output error to console.
            OutputDebugString(e->Message->Data());
        }
    }); 

    .then( [this] (concurrency::task<void> t)
    {
        try
        {
            t.get();
        }
        // SyndicationClient throws E_INVALIDARG 
        // if a URL contains illegal characters.
        catch(Platform::InvalidArgumentException^ e)
        {
            // TODO handle error. For example purposes
            // we just output error to console.
            OutputDebugString(e->Message->Data());
        }
    }); 

にすればいいらしい.

もう一つは,
OnNavigatedToをオーバーライドする必要がある.らしい.
オーバーライド...
自分のソースを見てみると,

MainPage.xaml.h

	protected:
		virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
	};

MainPage.xaml.cpp

void MainPage::OnNavigatedTo(NavigationEventArgs^ e)
{
	(void) e;	// Unused parameter
}

って書いてあるから,これでいいのかな??
わ,わからん...


とりあえず,1点目のほうを修正.
変えたら次のえらーがでた.

error C2338: incorrect parameter type for the callable object in 'then'; consider _ExpectedParameterType or task<_ExpectedParameterType> (see below)

IntelliSense: WinRT クラスのメンバー関数ではローカル lambda は使用できません	

ほほう.どういうことだ.
でも,MainPage.xaml.cppの

create_task(feedOp).then( [this] (SyndicationFeed^ feed) -> SyndicationFeed^{

とか

.then( [this] (concurrency::task<void> t){

の[this]が原因っぽい.
くそー.
チュートリアルむずい.

つづく!