質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

5889閲覧

'*': この間接指定を型 'System::String' で使用できませんというエラー

watarusugimoto

総合スコア47

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/06/20 00:43

C++で、以下のようなプログラムを動かそうと思ったのですが、
System::ComponentModel::Win32Exception noBrowserのnoBrowserの部分にエラーが出ます。
エラー内容は、「'*': この間接指定を型 'System::String' で使用できません」というものです。
C++初心者で、解決の糸口がつかめないのですが、どなたか教えて下さい。

#using <mscorlib.dll> #using <system.dll> #using <System.Windows.Forms.dll> int main() { //Use no more than one assginment when you test this code. //System::String *target = "http://www.microsoft.com"; //System::String *target = "ftp://ftp.microsoft.com"; System::String *target = "C:\\Program Files\\Microsoft Visual Studio\\INSTALL.HTM"; try { System::Diagnostics::Process::Start(target); } catch (System::ComponentModel::Win32Exception *noBrowser) { if (noBrowser->ErrorCode == -2147467259) System::Windows::Forms::MessageBox::Show(noBrowser -> Message); } catch (System::Exception *other) { System::Windows::Forms::MessageBox::Show(other -> Message); } return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんにちは。

回答ではないのですか、長くなるのでこちらから。

お使いのC++は標準のC++ではありません。C++/CLIというマイクロソフトの独自拡張がなされたC++です。
そして、エラーが出ている場所はまさにマイクロソフト独自拡張部分です。(.NETですね。)

従って、C++/CLIを学ぶには、通常のC++以外にマイクロソフトの独自拡張部分も学習が必要ですので、非常にたいへんです。C#とC++の両方の知識+αが必要です。
しかも、C++/CLIを使う人は多くはないので、情報も少ないです。マイクロソフトの情報さえC#に偏ってます。

ですので、初心者の方が最初にC++/CLIから入るのは、かなり無理があると感じます。
もし、選択の余地があるのなら、標準のC++から学ばれることをお勧めします。
選択の余地がない場合は、周りにC++/CLIに詳しい方が居るはずですので、その方へ聞くのも手と思います。
(もちろん、ここで聞いても問題ないですが、C++/CLIの人口が少ないため、あまり期待はしない方が良いと思います。)

投稿2016/06/20 01:11

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

watarusugimoto

2016/06/21 10:07

ありがとうございます。 C++の基本からこれからやり直してみたいと思います。
guest

0

ベストアンサー

C++/CLIですからね、ハンドル(^:managed)とポインタ(*:native)が混在してて、そのふたつは互換ではありません。

C++

1// C++/CLI Console application 2int main() { 3 System::String^ target = L"C:\\Program Files\\Microsoft Visual Studio\\INSTALL.HTM"; 4 try { 5 System::Diagnostics::Process::Start(target); 6 } catch (System::ComponentModel::Win32Exception^ noBrowser) { 7 if (noBrowser->ErrorCode == -2147467259) 8 System::Windows::Forms::MessageBox::Show(noBrowser->Message); 9 } catch (System::Exception^ other) { 10 System::Windows::Forms::MessageBox::Show(other -> Message); 11 } 12 return 0; 13}

投稿2016/06/20 01:37

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

watarusugimoto

2016/06/21 10:06

ありがとうございました。 *を^に置換したところうまくコンパイルが通りました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問