Questions tagged «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 :: ostream&,const …

15
您如何在C ++中正确使用名称空间?
我来自Java背景,这里使用的是包,而不是名称空间。我习惯于将可以一起工作以构成一个完整对象的类放入包中,然后在该包中重新使用它们。但是现在我正在使用C ++。 您如何在C ++中使用名称空间?您是为整个应用程序创建单个名称空间,还是为主要组件创建名称空间?如果是这样,如何从其他命名空间中的类创建对象?
231 c++  namespaces 


6
Django:“项目”与“应用”
我有一个相当复杂的“产品”,准备使用Django构建。在这种情况下,我将避免使用术语“项目”和“应用程序”,因为我不清楚它们在Django中的具体含义。 项目可以有许多应用程序。应用程序可以在许多项目之间共享。精细。 我不是在改造博客或论坛-我看不到产品的任何部分在任何情况下都可以重用。凭直觉,我将其称为“应用程序”。然后,我是否将所有工作都放在一个“ app”文件夹中? 如果是的话 ...就Django的project.app命名空间而言,我倾向于使用myproduct.myproduct,但这当然是不允许的(但是我正在构建的应用程序是我的项目,而我的项目是一个应用程序!)。因此,我相信我可能应该通过为每个“重要”模型构建一个应用程序来接近Django,但是我不知道在架构中将边界划分为应用程序的位置-我有很多东西具有相对复杂关系的模型。 我希望对此有一个通用的解决方案...

13
解决Objective-C名称空间冲突的最佳方法是什么?
Objective-C没有名称空间;与C非常相似,所有内容都位于一个全局名称空间内。常见的做法是在类的前面加上缩写,例如,如果您在IBM工作,则可以给它们加上“ IBM”作为前缀。如果您为Microsoft工作,则可以使用“ MS”;等等。有时,缩写是指项目,例如Adium在类的前面加上“ AI”(因为后面没有公司可以使用缩写)。苹果为类添加NS前缀,并说该前缀仅保留给苹果。 到目前为止一切顺利。但是在类名前面附加2到4个字母是一个非常非常有限的名称空间。例如,MS或AI可能具有完全不同的含义(例如AI可能是人工智能),并且其他一些开发人员可能决定使用它们并创建一个同名的类。Bang,名称空间冲突。 好的,如果这是您自己的类之一与所使用的外部框架之间的冲突,则可以轻松更改类的命名,没什么大不了的。但是,如果您使用两个外部框架,这两个框架都没有来源并且您不能更改,那该怎么办?您的应用程序与它们两者都链接,您会遇到名称冲突。您将如何解决这些问题?以一种仍然可以同时使用两个类的方式来解决它们的最佳方法是什么? 在C语言中,您可以通过不直接链接到库来解决这些问题,而是在运行时使用dlopen()加载库,然后使用dlsym()找到要查找的符号并将其分配给全局符号(即可以以您喜欢的任何方式命名),然后通过此全局符号进行访问。例如,如果由于某些C库具有名为open()的函数而发生冲突,则可以定义一个名为myOpen的变量,并将其指向该库的open()函数,因此当您要使用系统open()时,您只需使用open(),当您要使用另一个时,可以通过myOpen标识符进行访问。 在Objective-C中是否可能有类似的事情,如果没有,是否可以使用其他聪明,棘手的解决方案来解决命名空间冲突?有任何想法吗? 更新: 只是为了澄清这一点:当然欢迎提出建议如何避免名称空间冲突或如何创建更好的名称空间的答案;但是,我不会接受他们作为答案,因为他们不能解决我的问题。我有两个库,它们的类名冲突。我不能改变他们。我没有任何一个的来源。碰撞已经存在,而有关如何提前避免的提示将不再有用。我可以将它们转发给这些框架的开发人员,并希望他们将来选择更好的名称空间,但是目前我正在寻找一种解决方案,以在单个应用程序中立即使用这些框架。有什么解决办法可以做到这一点?


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 ... } namespace magic关键字返回当前的名称空间,如果被测试的对象具有另一个名称空间,则该名称空间将无效。 我可以简单地用名称空间指定完整的类名,但这似乎锁定了代码的结构。如果我想动态更改名称空间,也没有太大用处。 谁能想到一种有效的方法来做到这一点。我猜一个选择是正则表达式。
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
解决方案中的文件夹是否应与名称空间匹配?
解决方案中的文件夹是否应与名称空间匹配? 在我的一个团队项目中,我们有一个类库,该类库在项目中包含许多子文件夹。 项目名称和命名空间:MyCompany.Project.Section。 在此项目中,有几个与“名称空间”部分匹配的文件夹: 文件夹Vehicles在MyCompany.Project.Section.Vehicles名称空间中具有类 文件夹Clothing在MyCompany.Project.Section.Clothing名称空间中具有类 等等 在同一项目中,是另一个恶意文件夹 文件夹BusinessObjects在MyCompany.Project.Section名称空间中具有类 在某些情况下,为了“组织上的方便”而制作文件夹。 我的问题是:什么标准?在类库中,文件夹通常匹配名称空间结构吗?还是混合在一起?
129 c#  .net  namespaces 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.