C++を使った初めてのMetroスタイルアプリでRSSリーダーでもつくってみなよ その3
エラーで悩んで週が明けました.
と,今日の朝こういう記事を発見しました.
先週の時点ではなかった記事!
16日付,そしてGoogleの検索結果には16時間前という表示.
なんと,チュートリアルにミスがあるという.
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]が原因っぽい.
くそー.
チュートリアルむずい.
つづく!