sphinx-apidoc-Implicit-namespaces
全部标签 最近,我从客户那里得到了一个故障转储文件。我可以将问题追溯到可能包含不正确数据的类,但我只有一个指向该类的空指针,而不是真正的指针(空指针来自窗口属性,因此它是空指针).不幸的是,我想将指针转换到的类位于匿名命名空间中,如下所示:namespace{classMyClass{...};}...void*ptr=...//IknowptrpointstoaninstanceofMyClass,//andatthislocationIwanttocastptrto(MyClass*)inthedebugger.当我在监window口中使用ptr时,VisualStudio2005只显示指针
这个问题在这里已经有了答案:Isitpossibletoavoidrepeatingtheclassnameintheimplementationfile?(8个回答)关闭5年前。如果在C++中我有一个类longUnderstandableName。对于那个类,我有一个包含其方法声明的头文件。在类的源文件中,我不得不写longUnderstandableName::MethodA、longUnderstandableName::MethodB等等,无处不在。我能否以某种方式使用命名空间或其他东西,这样我就可以只在类源文件中编写MethodA和MethodB了吗?
我只是想知道为什么“使用命名空间”指令在C#中是可以接受的,thoughinC++itisnot.我知道C++和C#是不同的,但我的猜测是C++和C#几乎来自同一个家族,并且应该使用相同的想法来解析命名空间。C++和C#都有一个别名关键字来避免命名空间冲突。谁能指出我没有在C#中的行之间阅读的内容,这使得使用“使用命名空间”指令可以接受,并避免C++无法解决的问题。 最佳答案 在C++中,如果您在header中编写usingnamespace,那么它对包含该header的任何人都有效。这使得它在标题中几乎无法使用。此时,您最好也避免
我在许多使用STL类的地方都看到了下面的语法,而没有用std::明确限定它们。初始namespacestd{}有什么好处?为什么不直接放usingnamespacestd;?namespacestd{}usingnamespacestd; 最佳答案 namespacestd{}只是声明命名空间,以便编译器知道它并且执行usingnamespacestd;不会导致错误。std::后面的代码可以是#included并且可以在没有std::的情况下自动引用它们前缀。 关于c++-"namesp
我想知道在哪里放置usingnamespacestd;.我看到了usingnamespacestd;的代码在intmain(){}但我把它放在#include之后.我应该把它放在哪里,放在哪里有什么不同吗? 最佳答案 将其添加到函数内部会将using语句的范围仅限于该函数。你不应该把using头文件内的声明,以避免与头文件的用户发生冲突。如果您知道不会出现冲突,则将其放在文件范围内的main之上是可以的,但即使这样也可能会导致其他导入类型出现问题,并且通常在中等规模的项目中应避免使用。我尽量避免对全局命名空间的污染,但是如果我正在编
在boost库中,经常有包含库的例子:#pragmaonce#includeusingboost::property_tree::ptree;在我的整个程序中,我一直在导入这样的命名空间:#include"../MyClass.h"usingnamespaceMyClassNamespace;谁能解释一下:using和usingnamespace的区别;否定使用usingnamespace有利于using;前向声明using和usingnamespace的区别;谢谢 最佳答案 usingnamespace使命名空间的所有名称可见,而
什么是implicit_cast?我什么时候应该更喜欢implicit_cast而不是static_cast? 最佳答案 我正在复制我对answerthiscomment的评论在另一个地方。Youcandown-castwithstatic_cast.Notsowithimplicit_cast.static_castbasicallyallowsyoutodoanyimplicitconversion,andinadditionthereverseofanyimplicitconversion(uptosomelimits.you
假设我们有一个标题foo.h包含以下内容:#ifndefFOO_H_#defineFOO_H_namespacefoo{constexprstd::string_viewkSomeString="blah";}#endif//FOO_H_foo::kSomeString是否保证在包含foo.h的任何翻译单元中具有内部链接?这在C++11和C++17之间是否有所不同?在标准草案中[basic.link]/3说Anamehavingnamespacescopehasinternallinkageifitisthenameof[...]anon-inlinevariableofnon-vol
当在匿名命名空间中使用usingnamespace语句时,将使用的命名空间带入文件范围?例如:namespacefoo{intf(){return1;}}namespace{usingnamespacefoo;}inta(){returnf();//Willthiscompile?} 最佳答案 根据7.3.4[namespace.udir]第4段,命名空间指令是可传递的:Forunqualifiedlookupnominatesasecondnamespacethatitselfcontainsusing-directives,th
在下面的程序中,第5行确实按预期给出了溢出警告,但令人惊讶的是,第4行在GCC中没有给出任何警告:http://www.ideone.com/U0BXnintmain(){inti=256;charc1=i;//line4charc2=256;//line5return0;}我在想这两行都应该给出overflow警告。还是我缺少什么?我做这个实验的主题是:typedeftypechecking?在那里我说了以下内容(我从答案中删除了,因为当我运行它时,它并没有像我预期的那样显示)://However,you'llgetwarningforthiscase:typedefintT1;ty