2017-03-05 4 views
-3

私はUWPとC++の新機能です。 私はhttp-apiを扱う簡単なアプリケーションを書こうとしています。 私の例:コンパイラから^GetAsyncへのUri

void ForecastFromMSW::MainPage::GetTheCity(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) 
{ 
    String ^mystr = "http://google.com"; // creating a string object 
    Uri url(mystr); // crating an url object 
    HttpClient cli; //creating an object of HttpClient 
    cli.GetAsync(url); // pass url object to cli 
} 

メッセージ:私は見

1>------ Build started: Project: ForecastFromMSW, Configuration: Debug Win32 ------ 
1> MainPage.xaml.cpp 
1>c:\users\9maf4you\documents\visual studio 2015\projects\forecastfrommsw\forecastfrommsw\mainpage.xaml.cpp(38): error C2664: 'Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage ^,Windows::Web::Http::HttpProgress> ^Windows::Web::Http::HttpClient::GetAsync(Windows::Foundation::Uri ^,Windows::Web::Http::HttpCompletionOption)': cannot convert argument 1 from 'Windows::Foundation::Uri' to 'Windows::Foundation::Uri ^' 
1> c:\users\9maf4you\documents\visual studio 2015\projects\forecastfrommsw\forecastfrommsw\mainpage.xaml.cpp(38): note: No user-defined-conversion operator available, or 
1> c:\users\9maf4you\documents\visual studio 2015\projects\forecastfrommsw\forecastfrommsw\mainpage.xaml.cpp(38): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 
========== Deploy: 0 succeeded, 0 failed, 0 skipped ========== 

を、そのコンパイラは別のタイプに変換することができないと私はGetAsyncに^ URIを渡す必要があります理解しています。しかし、私は何をすべきか分からない。 Thnx。

+1

私はC++の専門家ではありませんが、 'Uri^url(mystr);のような宣言を提供するだけで問題を解決できますか? –

答えて

-1

コンパイラが問題

から、引数1を変換することができないことを言った 'Windowsの::財団::ウリ' から 'のWindows ::財団::ウリ^'

修正があります%,cli.GetAsync(%url);の管理された「アドレス」演算子を使用する。あなたが*Async()メソッドを呼び出していることから、おそらく真剣にC#を使用して検討する必要があること

ref class Foo sealed {}; 
void f(Foo^) {} 

int main(array<System::String ^> ^args) 
{ 
    Foo foo; 
    f(%foo); 
    return 0; 
} 

注:あなたは非常に簡単なテストプログラムでこの同じ問題を見ることができます。

+0

質問はC++/CXではなく、C++/CLIに関するものです。あなたの答えは当てはまりません。 – IInspectable

3

C++/CXでは、オブジェクトは通常ref newを使用してインスタンス化され、ref-countedオブジェクトハンドルを返します。あなたのコードを修正する最も簡単な方法は、それがスコープの外に出るときurlに参照カウントをデクリメントするためのコードを生成します

Uri^ url = ref new Uri(mystr); 

コンパイラで

Uri url(mystr); 

を置き換えることであろう。参照カウントがゼロになると、オブジェクトは自動的に破棄されます。

関連する問題