タグ付けされた質問 「namespaces」

名前空間は、名前が一意である識別子のコンテキストを提供するコンテナです。

5
ostreamの<<演算子を適切にオーバーロードする方法は?
行列演算のためにC ++で小さな行列ライブラリを書いています。しかし、私のコンパイラは文句を言いますが、以前はそうではありませんでした。このコードは6か月間棚に置いたままで、その間にコンピュータをdebian etchからlenny(g ++(Debian 4.3.2-1.1)4.3.2)にアップグレードしましたが、同じg ++のUbuntuシステムでも同じ問題があります。 これが私のマトリックスクラスの関連部分です: namespace Math { class Matrix { public: [...] friend std::ostream&amp; operator&lt;&lt; (std::ostream&amp; stream, const Matrix&amp; matrix); } } そして「実装」: using namespace Math; std::ostream&amp; Matrix::operator &lt;&lt;(std::ostream&amp; stream, const Matrix&amp; matrix) { [...] } これはコンパイラーによって与えられたエラーです: matrix.cpp:459:エラー: 'std :: ostream&Math :: Matrix :: operator &lt;&lt;(std :: …

15
C ++で名前空間を適切に使用するにはどうすればよいですか?
私は名前空間ではなく、パッケージが使用されるJavaのバックグラウンドから来ています。私は、一緒に機能するクラスをパッケージにまとめて完全なオブジェクトを作成し、それらを後でそのパッケージから再利用することに慣れています。しかし、今はC ++で作業しています。 C ++で名前空間をどのように使用しますか?アプリケーション全体に単一の名前空間を作成しますか、それとも主要コンポーネントに名前空間を作成しますか?もしそうなら、他の名前空間のクラスからオブジェクトをどのように作成しますか?
231 c++  namespaces 


6
Django:「プロジェクト」と「アプリ」
Djangoを使用して構築する準備をしている、かなり複雑な「製品」があります。Djangoでの具体的な意味が明確でないため、この文脈では「プロジェクト」と「アプリケーション」という用語の使用を避けます。 プロジェクトには多くのアプリを含めることができます。アプリは多くのプロジェクト間で共有できます。いいね。 私はブログやフォーラムを作り直すつもりはありません-私の製品のどの部分もどのような状況でも再利用できるとは思いません。直感的には、これを「アプリケーション」と呼びます。その後、すべての作業を1つの「アプリ」フォルダーで実行しますか? もしそうなら ... Djangoのproject.app名前空間に関して、私の傾向はを使用することmyproduct.myproductですが、もちろんこれは許可されていません(しかし、私が構築しているアプリケーションは私のプロジェクトであり、私のプロジェクトはアプリケーションです!)。したがって、「重要な」モデルごとに1つのアプリを作成することでDjangoにアプローチすることになっていると思われますが、スキーマに境界を描画してアプリに分割する場所がわかりません。比較的複雑な関係を持つモデルの。 これに対する一般的な解決策があることを願っています...

13
Objective-C名前空間の衝突を解決する最良の方法は何ですか?
Objective-Cには名前空間がありません。Cによく似ており、すべてが1つのグローバル名前空間内にあります。一般的な方法は、クラスの頭にイニシャルを付けることです。たとえば、IBMで作業している場合は、クラスの前に「IBM」を付けることができます。Microsoftで働いている場合は、「MS」を使用できます。等々。時々、イニシャルはプロジェクトを参照します。例えばAdiumはクラスの前に "AI"を付けます(イニシャルを取ることのできる背後に会社はないので)。Appleはクラスの前にNSを付け、このプレフィックスはApple専用に予約されていると述べています。 これまでのところ。ただし、クラス名の前に2〜4文字を追加することは、非常に限定された名前空間です。たとえば、MSやAIはまったく異なる意味を持つ可能性があり(たとえばAIは人工知能である可能性があります)、他の開発者がそれらを使用して同じ名前のクラスを作成する場合があります。バング、名前空間の衝突。 これが独自のクラスと使用している外部フレームワークのいずれかとの衝突である場合は、クラスの名前を簡単に変更できます。しかし、2つの外部フレームワークを使用すると、どちらのフレームワークにもソースがなく、変更できないのでしょうか。アプリケーションはそれらの両方とリンクし、名前の競合が発生します。これらをどのように解決しますか?両方のクラスを引き続き使用できるようにそれらを回避する最良の方法は何ですか? Cでは、ライブラリに直接リンクしないことでこれらを回避できます。代わりに、実行時にdlopen()を使用してライブラリをロードし、dlsym()を使用して探しているシンボルを見つけ、それをグローバルシンボルに割り当てます(任意の方法で名前を付けることができます)、このグローバルシンボルを介してアクセスできます。たとえば、一部のCライブラリにopen()という名前の関数があるために競合が発生した場合、myOpenという名前の変数を定義して、ライブラリのopen()関数を指すようにして、システムのopen()を使用したい場合に、あなたは単にopen()を使用し、もう1つを使用したい場合は、myOpen識別子を介してそれにアクセスします。 Objective-Cでも同様のことが可能ですか?そうでない場合、名前空間の競合を解決するために使用できる他の巧妙でトリッキーなソリューションはありますか?何か案は? 更新: これを明確にするために:名前空間の衝突を事前に回避する方法またはより適切な名前空間を作成する方法を提案する回答は確かに歓迎されます。しかし、私の問題を解決しないので、それらを答えとして受け入れません。2つのライブラリがあり、それらのクラス名が衝突しています。それらを変更することはできません。どちらのソースもありません。衝突はすでに存在しており、それを事前に回避する方法についてのヒントはもはや役に立ちません。それらをこれらのフレームワークの開発者に転送し、将来的にはより良い名前空間を選択することを期待できますが、当面は、単一のアプリケーション内でフレームワークを使用するソリューションを探しています。これを可能にする解決策はありますか?


5
二重コロンを使用して名前空間のクラスを前方宣言できないのはなぜですか?
class Namespace::Class; なぜこれをしなければならないのですか?: namespace Namespace { class Class; } VC ++ 8.0を使用すると、コンパイラーは以下を発行します。 エラーC2653:「名前空間」:クラスまたは名前空間名ではありません ここでの問題は、コンパイラがNamespaceクラスと名前空間のどちらであるかを判別できないことだと思いますか?しかし、これは単なる前方宣言なので、なぜこれが問題になるのでしょうか。 いくつかの名前空間で定義されたクラスを前方宣言する別の方法はありますか?上記の構文は、私が名前空間を「再開」し、その定義を拡張しているように感じます。Class実際に定義されていない場合はどうなりNamespaceますか?これにより、ある時点でエラーが発生しますか?
164 c++  namespaces 

7
std :: stringを使用したprintf?
私はそれstringがstd名前空間のメンバーであることを理解しているのに、なぜ以下が発生するのですか? #include &lt;iostream&gt; int main() { using namespace std; string myString = "Press ENTER to quit program!"; cout &lt;&lt; "Come up and C++ me some time." &lt;&lt; endl; printf("Follow this command: %s", myString); cin.get(); return 0; } プログラムが実行されるたびに、myString上記の出力のように、ランダムに見える3文字の文字列が出力されます。
157 c++  string  namespaces  printf  std 


22
オブジェクトの修飾されていない(短い)クラス名を取得するにはどうすればよいですか?
名前空間の完全なクラスを指定せずに、PHP名前空間環境内のオブジェクトのクラスを確認するにはどうすればよいですか。 たとえば、オブジェクトライブラリ/エンティティ/契約/名前があるとします。 get_classが完全な名前空間クラスを返すため、次のコードは機能しません。 If(get_class($object) == 'Name') { ... do this ... } 名前空間のmagicキーワードは、現在の名前空間を返します。これは、テストされたオブジェクトに別の名前空間がある場合は使用されません。 名前空間で完全なクラス名を指定することもできますが、これはコードの構造に固定されているようです。名前空間を動的に変更したい場合もあまり役に立ちません。 誰でもこれを行うための効率的な方法を考えることができますか?1つのオプションは正規表現だと思います。
153 php  class  namespaces 

5
クラス内で列挙型を宣言する
次のコードスニペットでは、Color列挙型Carのスコープを制限し、グローバル名前空間を「汚染」しないようにするために、列挙型がクラス内で宣言されています。 class Car { public: enum Color { RED, BLUE, WHITE }; void SetColor( Car::Color color ) { _color = color; } Car::Color GetColor() const { return _color; } private: Car::Color _color; }; (1)これはColor列挙型の範囲を制限する良い方法ですか?または、Carクラス外で宣言する必要がありますが、独自の名前空間または構造内で宣言する必要がありますか?私は本日この記事に出くわしました。後者は、後者を支持し、列挙に関するいくつかの良い点を議論しています:http : //gamesfromwithin.com/stupid-c-tr​​icks-2-better-enums。 (2)この例では、クラス内で作業する場合、列挙型をとしてコーディングするのが最善ですかCar::Color、それともColor十分ですか?(Colorグローバル名前空間で別の列挙型が宣言されている場合に備えて、前者のほうが良いと思います。少なくとも、参照している列挙型については明示的です。)
150 c++  class  enums  namespaces  scope 

5
Pythonで名前空間パッケージを作成するにはどうすればよいですか?
Pythonでは、名前空間パッケージを使用すると、Pythonコードを複数のプロジェクトに分散できます。これは、関連するライブラリを個別のダウンロードとしてリリースする場合に便利です。たとえば、ディレクトリとPackage-1とPackage-2ではPYTHONPATH、 Package-1/namespace/__init__.py Package-1/namespace/module1/__init__.py Package-2/namespace/__init__.py Package-2/namespace/module2/__init__.py エンドユーザー缶import namespace.module1とimport namespace.module2。 複数のPython製品がその名前空間でモジュールを定義できるように、名前空間パッケージを定義する最良の方法は何ですか?

9
Python ElementTreeモジュール:メソッド「find」、「findall」を使用するときに、XMLファイルの名前空間を無視して一致する要素を見つける方法
「findall」のメソッドを使用して、ElementTreeモジュールでソースxmlファイルのいくつかの要素を見つけたいと思います。 ただし、ソースxmlファイル(test.xml)には名前空間があります。サンプルとしてxmlファイルの一部を切り捨てます: &lt;?xml version="1.0" encoding="iso-8859-1"?&gt; &lt;XML_HEADER xmlns="http://www.test.com"&gt; &lt;TYPE&gt;Updates&lt;/TYPE&gt; &lt;DATE&gt;9/26/2012 10:30:34 AM&lt;/DATE&gt; &lt;COPYRIGHT_NOTICE&gt;All Rights Reserved.&lt;/COPYRIGHT_NOTICE&gt; &lt;LICENSE&gt;newlicense.htm&lt;/LICENSE&gt; &lt;DEAL_LEVEL&gt; &lt;PAID_OFF&gt;N&lt;/PAID_OFF&gt; &lt;/DEAL_LEVEL&gt; &lt;/XML_HEADER&gt; サンプルのPythonコードは次のとおりです。 from xml.etree import ElementTree as ET tree = ET.parse(r"test.xml") el1 = tree.findall("DEAL_LEVEL/PAID_OFF") # Return None el2 = tree.findall("{http://www.test.com}DEAL_LEVEL/{http://www.test.com}PAID_OFF") # Return &lt;Element '{http://www.test.com}DEAL_LEVEL/PAID_OFF' at 0xb78b90&gt; 機能しますが、「{http://www.test.com}」という名前空間があるため、各タグの前に名前空間を追加するのは非常に不便です。 「find」、「findall」などのメソッドを使用する場合、ネームスペースをどのように無視できますか?


7
ソリューションのフォルダーは名前空間と一致する必要がありますか?
ソリューションのフォルダーは名前空間と一致する必要がありますか? 私のチームプロジェクトの1つに、プロジェクト内に多数のサブフォルダーがあるクラスライブラリがあります。 プロジェクト名と名前空間:MyCompany.Project.Section。 このプロジェクト内には、名前空間セクションに一致するいくつかのフォルダーがあります。 フォルダーVehiclesのMyCompany.Project.Section.Vehicles名前空間にクラスがあります フォルダーClothingのMyCompany.Project.Section.Clothing名前空間にクラスがあります 等 この同じプロジェクト内に、別の不正なフォルダがあります フォルダーBusinessObjectsのMyCompany.Project.Section名前空間にクラスがあります このような「組織の便宜」のためにフォルダが作成されるいくつかのケースがあります。 私の質問は:標準は何ですか?クラスライブラリでは、フォルダーは通常名前空間の構造と一致していますか、それとも混合バッグですか?
129 c#  .net  namespaces 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.