草庐IT

Hotel_Name

全部标签

c++ - 为什么 type_info::name() 未指定?

我完全知道std::type_info::name()的返回值是实现定义的。来自C++标准(ISO/IEC14882:2003§18.5.1.7):Returns:animplementation-definedNTBS.我的问题是:为什么?如果标准规定了返回值应该是什么,这个成员函数不是更有用吗? 最佳答案 基本上,如果一个实现决定他们不能或不想支持RTTI,他们可以return"";。如果标准强制它返回某些东西,他们可能会扼杀任何为RTTI资源不存在或想要禁用的环境(例如微芯片)提供兼容编译器的能力。别忘了我们不想在任何编译器上

c++ - "Universal character name conversion"在 C++ 中是什么意思?

C++98显然将此作为编译阶段的标准之一。什么意思,为什么一开始就执行? 最佳答案 通用字符名称类似于\uFFFD或\U0010FFFD。这是一种在源代码中写入字符的方法,其中源代码编码不包含该字符。C++规定在翻译的第一阶段将不在基本源字符集中的字符转换为通用字符名称。这样做的原因是通用字符名称和不在基本源字符集中但在源字符集中的字符得到相同的处理。as-if规则意味着实际上不需要实现来执行此通用字符名称转换,只要它把写为通用字符名称的扩展字符与字面上显示的扩展字符相同在源代码中。 关

没有宏的 C++ 简单反射 : Print Variable Name and Its Value

在C++中是否有一种非宏的方式来打印变量名及其值。这是宏方法:#defineSHOW(a)std::coutPS:我用的是Linux,不需要跨平台的解决方案 最佳答案 不,C++不支持反射,唯一的方法(据我所知)是使用宏。 关于没有宏的C++简单反射:PrintVariableNameandItsValue,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6849965/

c++ - 使用 typeinfo::name() 后内存泄漏

我有一个程序,其中部分用于信息日志记录,我在使用时输出一些类的名称(具体来说,我在日志中添加了一个条目,上面写着Messages::CSomeClasstransmittedto127.0.0.1)。我使用类似于以下的代码执行此操作:std::stringgetMessageName(void)const{returnstd::string(typeid(*this).name());}是的,在有人指出之前,我意识到typeinfo::name的输出是特定于实现的。根据MSDNThetype_info::namememberfunctionreturnsaconstchar*toanu

c++ - 模板错误 : nontype ".. [with T=T] is not a type name"

尝试对我的内存对齐进行类型定义,我得出了以下结构(由于我需要更正GNU版本,该结构仍在进行中):#ifdefined(__GNUG__)templatestructsfo_type{typedefT*restrict__attribute__((aligned(32)))aptr32;};#elifdefined(__INTEL_COMPILER)templatestructsfo_type{typedefT*restrict__attribute__((aligned(32)))aptr32;};#endif然后我尝试像这样使用它:templateclasstsfo_vector{p

c++ - std::typeid::name() 的奇怪输出

我使用typeid获取std::vector::size_type的类型名称和一个零大小的类A,代码如下(cppreference):#include#include#includeusingnamespacestd;classA{};intmain(){vectorv(10);vector::size_types=v.size();Aa;cout我把这个作为输出:m1A我猜“A”之前的“1”是空基类优化的结果,但是“m”代表什么,这正常吗?我正在使用以下gcc版本:g++(Ubuntu4.4.3-4ubuntu5.1)4.4.3 最佳答案

c++ - Qt 造物主 : “XYZ does not name a type”

这是QtCreator中非常令人沮丧的错误消息:'XYZ'doesnotnameatype。这通常意味着XYZ类中存在阻止编译器生成该类型的错误,但没有关于出错原因的其他提示。有什么建议吗? 最佳答案 我刚遇到这个问题,正如Arckaroph所说:问题是,当我们在源代码文件中包含一个头文件,并在其中使用指令#ifndef时,我们不能将它再次包含在头文件中,以将其包含类的类型赋予源代码中的变量代码文件例子:class1.h包含Class1class2.h包含Class2class2有一个class1类型的私有(private)变量V如

c++ - VS2008 : Can I build a project with 2 CPP files of the same name in different folders?

这是我的文件夹结构:/|--program.cpp--utility.h--utility.cpp|--module/|--utility.h--utility.cpp//NotethatIhavetwofilesnamedutility.handtwonamedutility.cpp在构建项目时,我收到链接错误(LNK2028:未解析的token等...),指出某些符号未定义。我已经确认所有符号都已定义,并且所有声明的函数都有相应的定义。我有一种感觉,在编译我的项目时,两个文件夹中的utility.cpp文件被编译到输出文件夹中的相同utility.obj中。结果,一个覆盖了另一个。

c++ - 如何从 HWND 获取 Window Class Name 和 Id?

如何从HWND获取窗口类名和Id?我搜索了一下,发现相反的更受欢迎。有什么想法吗?!?!? 最佳答案 Andreas的回答和Arthur显示如何获取类名。对于“Id”,您可能指的是子窗口的窗口标识符;GetWindowLong(HWnd,GWL_ID) 关于c++-如何从HWND获取WindowClassName和Id?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/324666

C++: "error: expected class-name before ‘{’ token"继承模板类时

我四处寻找问题的解决方案,发现了很多关于循环引用和namespace的问题(均不适用于我的情况),但与我遇到的问题完全不同。我在maths/matrix.h中定义并实现了一个模板类:templateclassMatrix{public://constructors,destructorsandwhatnot...};我在maths/vector.h中定义并实现了另一个模板类#includetemplateclassVector:publicMatrix{public://constructors,destructorsandwhatnot...};我在vector.h中收到此错误“ex