none
質問 RRS feed

  • 質問

  • 以前買ったC++.net 2003の本のコードを試したのですがエラーになりました。Form1にラベルを配置してラベルをクリックするとメッセージボックスを表示するアプリケーションです。

    ビルドのエラーは3件です。

    cppファイルの 構文エラー :'namespace'

                  ;の前の無効なトークン         

                 左側中かっこ{に対応するものがform1.hで見つかる前にEOFが検出されました。

    はじめの2つは    namespace ファイル名;  で3つ目のエラーは終わりの}の1つ下の行です。

    そしてform1.h[デザイン]をダブルクリックすると

    データが失われる可能性を防ぐため、デザイナの読み込み前に以下のエラーを解決する必要があります。

    このファイルのデザイナに、デザインできるクラスがないため、デザイナを表示できませんでした。

    と表示されます。

    2008年7月16日 6:28

回答

  • バージョンの質問を受けていると思うのですが、それに関する答えはどうなのでしょう?

    お答えが無いようなので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バイト文字で入れときますね。

     

    2008年7月17日 5:05
  • 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++マネージ拡張」のこと。

    2008年7月17日 14:04
    モデレータ

すべての返信

  •  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が検出されました。

    正直なところ、提示されたエラーだけで判断するのは無理です。

    どの位置にどのようなコードを書き込んだか、その説明をお願いします。

    2008年7月16日 14:12
    モデレータ
  • お返事ありがとうございます。

    コードを間違えて打っていたみたいで打ち直してみました。ボタンを配置してボタンをダブルクリックしてコードを打ち込みました。

     

    private: System::Void button1_Click(System:Surprisebject^   sender,  System::EventArgs^ e){

    //System::Windows::Forms::MessageBox:Tongue Tiedhow(

    //"Welcome to VC++ .NET!");

    System:Big SmileateTime now =System:Big Smileatetime::get_Now();

    String *msg= now.Tostring();

    System::Windows::Forms::MessageBox:Tongue Tiedhow(msg);

    };

    }

    エラーは3件です。

    'get_Now': 'System:Big SmileateTime'のメンバーではありません。

         System:Big Smileatetimeの宣言を確認してください。

         get_Now 識別子がみつかりませんでした。

    2008年7月17日 1:58
  • バージョンの質問を受けていると思うのですが、それに関する答えはどうなのでしょう?

    お答えが無いようなので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バイト文字で入れときますね。

     

    2008年7月17日 5:05
  • 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++マネージ拡張」のこと。

    2008年7月17日 14:04
    モデレータ
  • visualC++2008 expressです。msdnで調べました。

    get_now をNOWに変更してビルドするとエラー 、 引数を取り込む関数には評価されません、となりました。

    今後もエラーが続くようだとvisual C++.net 2003の本で勉強するのをやめようと思います。

    2008年7月18日 2:26
  •  

    NOW()をNOW にするとうまいきました。どうも失礼しました。
    2008年7月20日 12:47
  • こんにちは。中川俊輔 です。

     

    Azuleanさん、PATIOさん、回答ありがとうございます。

     

    ara8さん、フォーラムのご利用ありがとうございます。

    有用な情報と思われたため、Azuleanさん、PATIOさんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    ara8さんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

    2008年7月31日 8:51