トップ回答者
質問

質問
-
以前買ったC++.net 2003の本のコードを試したのですがエラーになりました。Form1にラベルを配置してラベルをクリックするとメッセージボックスを表示するアプリケーションです。
ビルドのエラーは3件です。
cppファイルの 構文エラー :'namespace'
;の前の無効なトークン
左側中かっこ{に対応するものがform1.hで見つかる前にEOFが検出されました。
はじめの2つは namespace ファイル名; で3つ目のエラーは終わりの}の1つ下の行です。
そしてform1.h[デザイン]をダブルクリックすると
データが失われる可能性を防ぐため、デザイナの読み込み前に以下のエラーを解決する必要があります。
このファイルのデザイナに、デザインできるクラスがないため、デザイナを表示できませんでした。
と表示されます。
回答
-
バージョンの質問を受けていると思うのですが、それに関する答えはどうなのでしょう?
お答えが無いようなのでVC++ 2005 Express Editionか、VC++ 2008 Express Editionを
使っているものとして書きます。
お使いの本がVC++ .NET 2003の本と言うことなので開発環境とのバージョンの差があると思います。
この差がどの程度あるのかと言う部分に関して詳しくは書けませんけれど、この差の部分を御自分で
補完して対処ができないのであれば、使っている環境にあった本を手に入れて勉強される事を
お勧めします。.NET 2003の頃にmanaged C++と言われていた環境はVC++ 2005以降の環境には
ありません。新たにC++/CLIという言語になっています。
ですから、.NET 2003の本を使っても多分うまくいかないケースが他にも出てくると思います。
この違いを御自分で調べて解決できれば問題有りませんけれど、書かれている内容からすると
それが出来る状態にあるとは思えません。
で、VC++ .NET 2003の勉強をする必要があるのであれば、VC++ .NET 2003が必要です。
逆に.NET 2003である必要はなく、VC++で.NET Frameworkを使ったプログラミングをしたいと言う話なら
本の方を新しい環境に合わせた本にするべきです。
今後はC++/CLIをつかっていくことになるとおもいますから。
ただ、.NET Frameworkを使いたいと言う用途にVC++が向いているかと言うと疑問は残りますけれど。
単純に.NET Frameworkを使いたくてC言語の知識があるのであれば、C#に走った方がまだ良い気もします。
この辺は意見が分かれるところだと思いますので私の個人的な意見だと思ってください。
ちなみにですが、VisualStudio 2005(VC++)でSystem::DateTimeにget_Nowという関数は有りませんね。
なので、今のまま勉強を進めても苦労するわりに実りが少ないと思います。
あと、コードの中にクラス名称とかソースコードをそのまま記述する場合は、投稿する時に
投稿欄の下にある「この投稿にはコードサンプルが含まれる」にチェックを入れることをお勧めします。
そうすると表示の時に化けなくなります。
うーん、編集しちゃうと化けちゃいますね。
こまったもんだ。
コロンを2バイト文字で入れときますね。
-
Visual C++.NET 2003の書き方と、Visual C++ 2005(Visual C++ 2008)の書き方は全く違います。
Visual C++.NET 2003の書き方の書籍は、Visual C++ 2005(Visual C++ 2008)では使えないと考えて良いです。
厳密に言うと、旧構文をサポートする機能は提供されています。
しかし、「Microsoft Visual C++ 2005 では、C++ マネージ拡張構文の使用は避けてください」とあるので、辞めた方が良いでしょう。
http://msdn.microsoft.com/ja-jp/library/k8d11d4s(VS.80).aspx
※Visual C++.NET 2003での書き方は「C++マネージ拡張」のこと。
すべての返信
-
ara8 さんからの引用 以前買ったC++.net 2003の本のコードを試したのですがエラーになりました。
投稿されているフォーラムはVisual C++ Express Edition向けとなっていますが間違いないですか?
Express Editionは2005または2008ですが、2005以降で主流のC++/CLIと、.NET 2003の頃のManaged C++とは構文が変更になっています。
Express Editionでそのまま通るわけではありませんのでご注意ください。
(コンパイルオプションでManaged C++を選べたような気がしますが、どの程度動くのか把握していません)
ara8 さんからの引用 ビルドのエラーは3件です。
cppファイルの 構文エラー :'namespace'
;の前の無効なトークン
左側中かっこ{に対応するものがform1.hで見つかる前にEOFが検出されました。
正直なところ、提示されたエラーだけで判断するのは無理です。
どの位置にどのようなコードを書き込んだか、その説明をお願いします。
-
お返事ありがとうございます。
コードを間違えて打っていたみたいで打ち直してみました。ボタンを配置してボタンをダブルクリックしてコードを打ち込みました。
private: System::Void button1_Click(System:
bject^ sender, System::EventArgs^ e){
//System::Windows::Forms::MessageBox:
how(
//"Welcome to VC++ .NET!");
System:
ateTime now =System:
atetime::get_Now();
String *msg= now.Tostring();
System::Windows::Forms::MessageBox:
how(msg);
};
}
エラーは3件です。
'get_Now': 'System:
ateTime'のメンバーではありません。
System:
atetimeの宣言を確認してください。
get_Now 識別子がみつかりませんでした。
-
バージョンの質問を受けていると思うのですが、それに関する答えはどうなのでしょう?
お答えが無いようなのでVC++ 2005 Express Editionか、VC++ 2008 Express Editionを
使っているものとして書きます。
お使いの本がVC++ .NET 2003の本と言うことなので開発環境とのバージョンの差があると思います。
この差がどの程度あるのかと言う部分に関して詳しくは書けませんけれど、この差の部分を御自分で
補完して対処ができないのであれば、使っている環境にあった本を手に入れて勉強される事を
お勧めします。.NET 2003の頃にmanaged C++と言われていた環境はVC++ 2005以降の環境には
ありません。新たにC++/CLIという言語になっています。
ですから、.NET 2003の本を使っても多分うまくいかないケースが他にも出てくると思います。
この違いを御自分で調べて解決できれば問題有りませんけれど、書かれている内容からすると
それが出来る状態にあるとは思えません。
で、VC++ .NET 2003の勉強をする必要があるのであれば、VC++ .NET 2003が必要です。
逆に.NET 2003である必要はなく、VC++で.NET Frameworkを使ったプログラミングをしたいと言う話なら
本の方を新しい環境に合わせた本にするべきです。
今後はC++/CLIをつかっていくことになるとおもいますから。
ただ、.NET Frameworkを使いたいと言う用途にVC++が向いているかと言うと疑問は残りますけれど。
単純に.NET Frameworkを使いたくてC言語の知識があるのであれば、C#に走った方がまだ良い気もします。
この辺は意見が分かれるところだと思いますので私の個人的な意見だと思ってください。
ちなみにですが、VisualStudio 2005(VC++)でSystem::DateTimeにget_Nowという関数は有りませんね。
なので、今のまま勉強を進めても苦労するわりに実りが少ないと思います。
あと、コードの中にクラス名称とかソースコードをそのまま記述する場合は、投稿する時に
投稿欄の下にある「この投稿にはコードサンプルが含まれる」にチェックを入れることをお勧めします。
そうすると表示の時に化けなくなります。
うーん、編集しちゃうと化けちゃいますね。
こまったもんだ。
コロンを2バイト文字で入れときますね。
-
Visual C++.NET 2003の書き方と、Visual C++ 2005(Visual C++ 2008)の書き方は全く違います。
Visual C++.NET 2003の書き方の書籍は、Visual C++ 2005(Visual C++ 2008)では使えないと考えて良いです。
厳密に言うと、旧構文をサポートする機能は提供されています。
しかし、「Microsoft Visual C++ 2005 では、C++ マネージ拡張構文の使用は避けてください」とあるので、辞めた方が良いでしょう。
http://msdn.microsoft.com/ja-jp/library/k8d11d4s(VS.80).aspx
※Visual C++.NET 2003での書き方は「C++マネージ拡張」のこと。
-