名前空間どっちですか?

解決


くろのすけ  2006-09-05 10:36:51  No: 62915  IP: 192.*.*.*

くろのすけです。

Visual C++ 2005  Express Editionを使って、C++/CLIプログラミングを
勉強しています。

名前空間というワードがたびたび出てきます。
当初下記サンプルの
 System;
 System::ComponentModel;
 System::Collections;
 System::Windows::Forms;
 System::Data;
 System::Drawing;
だと思っていましたが、"Test"も名前空間のようです。
「名前空間」のなかに「名前空間」を定義したのか?と思ったのですか、
どうなのでしょうか?
どうもすっきりしません。
わかる方、ぜひ教えてください!!

+-+--+-+--+-+--+-+--サンプル+--+-+--+-+--+-+--+-+--+-+--
namespace Test {

        using namespace System;
        using namespace System::ComponentModel;
        using namespace System::Collections;
        using namespace System::Windows::Forms;
        using namespace System::Data;
        using namespace System::Drawing;

        public ref class Form1 : public System::Windows::Forms::Form
        {
                /* XXXXXXXX */
        }
}
+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--

編集 削除
iijima  2006-09-05 13:38:10  No: 62916  IP: 192.*.*.*

namespace Test { ... }

とすると、Test名前空間が定義され、{ }内で宣言した名前(クラス名、関数
名等)がTest名前空間のメンバとなります。

using namespace System;

とすると、これ以降でSystem名前空間に含まれる名前がスコープ解決演算子
による限定(System::)を省略しても使用できるようになります。
System名前空間は、これ以前にどこかで定義されているものです。

詳細/厳密には、名前空間,namespace,using などをキーワードとして調
べてください。

編集 削除
くろのすけ  2006-09-05 15:32:06  No: 62917  IP: 192.*.*.*

iijima様

早速の対応、感謝します。

>namespace Test { ... }

>とすると、Test名前空間が定義され、{ }内で宣言した名前(クラス名、関数
>名等)がTest名前空間のメンバとなります。

はい。

>using namespace System;

>とすると、これ以降でSystem名前空間に含まれる名前がスコープ解決演算子
>による限定(System::)を省略しても使用できるようになります。
そうですね。

>System名前空間は、これ以前にどこかで定義されているものです。

そうゆうことですか。System名前空間は既に定義されていて
ここでは、省略可能にするためこうしているだけ、ということですね。

>詳細/厳密には、名前空間,namespace,using などをキーワードとして調
>べてください。
はい。わかりました。
調べてみます。
ありがとうございます。

編集 削除
くろのすけ  2006-09-06 22:33:16  No: 62918  IP: 192.*.*.*

iijima様

理解できました。
ありがとうございました。

編集 削除