草庐IT

无法命名的 C++ 类型

阅读时Wikipedia'spageondecltype,我很好奇这个说法,Its[decltype's]primaryintendeduseisingenericprogramming,whereitisoftendifficult,orevenimpossible,tonametypesthatdependontemplateparameters.虽然我可以理解该语句的困难部分,但有什么示例需要命名在C++03下无法命名的类型?编辑:我的意思是,因为C++中的所有内容都有类型声明。为什么会出现无法命名类型的情况?此外,特征类不是旨在产生类型信息吗?特征类可以替代decltype吗?

c++ - 我应该使用哪个数组/列表?

我正在寻找实现以下功能(伪代码)的列表类型:list.init(5,2,6,9);list.add(1)//2,6,9,1list.add(4)//6,9,1,4list.add(8)//9,1,4,8将新元素添加到固定大小的列表并弹出最旧的元素。对不起,我不知道这个概念的名字,所以我问你,名字可能是什么。;)我在C++中的实现实际上是这样的:std::dequevalues(4);voidadd(doublevalue){values.pop_front();values.push_back(value);}有没有比我的更好的实现,也许一直是固定大小的?

c++ - 我应该使用哪个数组/列表?

我正在寻找实现以下功能(伪代码)的列表类型:list.init(5,2,6,9);list.add(1)//2,6,9,1list.add(4)//6,9,1,4list.add(8)//9,1,4,8将新元素添加到固定大小的列表并弹出最旧的元素。对不起,我不知道这个概念的名字,所以我问你,名字可能是什么。;)我在C++中的实现实际上是这样的:std::dequevalues(4);voidadd(doublevalue){values.pop_front();values.push_back(value);}有没有比我的更好的实现,也许一直是固定大小的?

c++ - "atom"数据类型是什么?

我在Win32api中遇到了ATOM类型在AcrobatAPI中还有ASAtom.据我所知,原子是哈希表的键,通常是字符串,以实现快速查找并在应用程序之间共享数据。这是正确的吗?原子类型的词源是什么?编辑经过大量搜索后,我注意到Prolog使用原子,所以这个词一定有一些起源。它似乎用于引用任何单个数据。 最佳答案 ATOM是一个16位Windows类句柄原语。它的值对用户模式完全不透明。它不是指针或索引。typedef无符号短ATOM; 关于c++-"atom"数据类型是什么?,我们在S

c++ - "atom"数据类型是什么?

我在Win32api中遇到了ATOM类型在AcrobatAPI中还有ASAtom.据我所知,原子是哈希表的键,通常是字符串,以实现快速查找并在应用程序之间共享数据。这是正确的吗?原子类型的词源是什么?编辑经过大量搜索后,我注意到Prolog使用原子,所以这个词一定有一些起源。它似乎用于引用任何单个数据。 最佳答案 ATOM是一个16位Windows类句柄原语。它的值对用户模式完全不透明。它不是指针或索引。typedef无符号短ATOM; 关于c++-"atom"数据类型是什么?,我们在S

c++ - 从模板切换传递的类型

是否可以在C++中检查传递给模板函数的类型?例如:templatevoidFoo(){if(typeof(SomeClass)==T)...;elseif(typeof(SomeClass2)==T)...;} 最佳答案 是的,它是......但它可能不会像你期望的那样工作。templatevoidfoo(){if(is_same::value)...;elseif(is_same::value)...;}您可以根据您的需求/编译器从std::或boost::获取is_same。前者仅在C++0x中。问题在于...中的内容。如果您希

c++ - 从模板切换传递的类型

是否可以在C++中检查传递给模板函数的类型?例如:templatevoidFoo(){if(typeof(SomeClass)==T)...;elseif(typeof(SomeClass2)==T)...;} 最佳答案 是的,它是......但它可能不会像你期望的那样工作。templatevoidfoo(){if(is_same::value)...;elseif(is_same::value)...;}您可以根据您的需求/编译器从std::或boost::获取is_same。前者仅在C++0x中。问题在于...中的内容。如果您希

c++ - 有人可以向我解释一下 C++ 中复杂的函数指针类型吗

谁能告诉我函数f的参数类型是什么?intf(void(*(int,long))(int,long)){}在尝试编译一些可变参数模板重代码(我自己的std::thread包装器)时,我得到了与此类似的类型... 最佳答案 声明intf(void(*(int,long))(int,long)){}声明一个函数f返回int并将一个指向函数的指针作为参数,该函数接受int,long参数并返回一个指向返回void并接受参数int,long的函数。使用typedef作为最内层的函数指针,这变得更具可读性:typedefvoid(*fptr)(i

c++ - 有人可以向我解释一下 C++ 中复杂的函数指针类型吗

谁能告诉我函数f的参数类型是什么?intf(void(*(int,long))(int,long)){}在尝试编译一些可变参数模板重代码(我自己的std::thread包装器)时,我得到了与此类似的类型... 最佳答案 声明intf(void(*(int,long))(int,long)){}声明一个函数f返回int并将一个指向函数的指针作为参数,该函数接受int,long参数并返回一个指向返回void并接受参数int,long的函数。使用typedef作为最内层的函数指针,这变得更具可读性:typedefvoid(*fptr)(i

具有模板成员变量的 C++ 类

我正在尝试解决一个由包含多个参数的对象(称为图表)组成的编程问题。每个参数(Parameter类)可以是以下几种类型之一:int、double、complex、string-仅举几例。所以我的第一直觉是将我的Diagram类定义为具有模板参数的vector,如下所示。classDiagram{private:std::vector>v;};这不能编译,我明白为什么。因此,根据此页面上的建议Howtodeclaredatamembersthatareobjectsofanytypeinaclass,我修改我的代码看起来像:classParameterBase{public:virtual