草庐IT

c++ - 可移植 C++ 03 精确宽度类型

背景不幸的是,当前的C++标准缺少在stdintheader中定义的C99精确宽度类型。我能找到的下一个最好的东西(就可移植性而言)是Boost的cstdint.hpp实现,来自Boost.Integer图书馆。疑虑也就是说,我遇到了一些问题:Boost的实现将所有typedef转储到boostnamesapce中(而不是像boost::stdint)。这非常丑陋,因为现在您要么被迫仅对您感兴趣的类型使用using指令(这是一项额外的维护工作),要么将整个boostnamespace到global¹范围(这违背了namespace的要点)。例如,我当然可以变得冗长并在任何地方键入boo

c++ - #include <string> 在 header 中定义了一些结构。错误 : string does not define a type

#ifndefSTRCUTS_H#defineSTRCUTS_H#includestructmenuEntry{stringitemID;//'string'doesnotnameatypestringitemName;//'string'doesnotnameatype};#endif当我将#include放在header保护上方时,我得到了同样的错误。想一想,我以前在将结构定义放在标题中时遇到过奇怪的麻烦。一定是我没有得到的东西。 最佳答案 您需要将string更改为std::string,即#ifndefSTRCUTS_H#d

C++ 错误 : invalid types 'int[int]' for array subscript

尝试学习C++并完成一个关于数组的简单练习。基本上,我已经创建了一个多维数组,我想创建一个打印出值的函数。Main()中的注释for循环工作正常,但是当我尝试将该for循环转换为函数时,它不起作用,而且对于我来说,我不明白为什么。#includeusingnamespacestd;voidprintArray(inttheArray[],intnumberOfRows,intnumberOfColumns);intmain(){intsally[2][3]={{2,3,4},{8,9,10}};printArray(sally,2,3);//for(introws=0;rows

java - 公共(public)方法中的私有(private)参数

当非私有(private)方法的参数是私有(private)类型(例如,私有(private)嵌套类)时,g++和javac都不会发出警告。此类方法不能由客户端使用,但它们可以作为类的公共(public)API的一部分出现。在C++中,将此类方法放入类Foo的公共(public)部分,例如,可以允许其他类访问这些方法,而无需明确列为类Foo中的友元(只要它们可以访问用作参数)。但总的来说,不显式地将此类方法设为私有(private)是否是不好的风格,还是可以将其忽略?(反正客户端用不了,有什么大不了的) 最佳答案 这是允许的,也可能

c++ - 什么是 sa_family_t

我正在关注Beej'sGuidetoNetworkProgramming,并且我使用的是VC++2010,但是当我将结构复制粘贴到我的程序中时,某些类型会作为不正确的标识符出现。例如:u_int32_t就是这样出现的,经过一些搜索我发现这些是C语言大约1999年的旧类型。我本可以包含stdint.h,但这需要我记住它们的意思。相反,我使用了标准的int,它是32位长(4字节),而对于其他的64位长(8字节),我使用了longlongint.无论如何,我正在缩小我的最后一个语法错误,它说sa_family_t是一个无效的标识符。我不知道它应该是什么,搜索也没有任何结果。那是我的问题,我不

c++ - int8_t 和 char : converts between pointers to integer types with different sign - but it doesn't

我正在处理一些嵌入式代码,并且正在从头开始编写一些新东西,因此我更愿意坚持使用uint8_t、int8_t等类型。然而,当移植一个函数时:voidfunctionName(char*data)到:voidfunctionName(int8_t*data)在将文字字符串传递给函数时,我收到编译器警告“在指向具有不同符号的整数类型的指针之间转换”。(即调用functionName("putthistextin");时)。现在,我明白了为什么会发生这种情况,并且这些行只是调试,但我想知道人们认为什么是最合适的处理方式,而不是对每个文字字符串进行类型转换。在实践中,我不认为一揽子类型转换比使用

C++如何识别变量的类型

给定一个从vector中获取的变量,有没有办法识别类型。请注意,我已经知道成员的类型并且可以在对模板的调用中指定它。这是一个允许特定类型变量的push_back()的特定vector。例如,我们有一个允许vector运算的类。autodata=member().back();//getsthelastentryinthemembervector使用模板,我想创建一个类型的新条目dataTypenewdata;member().push_back(newdata)有没有办法根据back()操作的结果来识别数据类型?如果有,我可以创建一个模板,并通过传入成员指示符来检索类型。如果没有,我必

c++ - 如何将函数标记为使其参数无效

我有一个函数f接受一个指针vector。一旦函数f完成,这些指针就不再有效。请注意,实际上没有必要更改vector本身,我只是想鼓励调用者不要在调用f之后使用指针。f有三种可能的签名:move签名voidf(vector&&v);//becausethepointersinvarenolongervalid.//Thissignaturealsoallowsmetohavefcallclear()onv.常量签名voidf(constvector&v);//becausethepointersinvarenolongervalid,//butwedon'thavetochangethe

模板中的 C++ 数据类型

我对在C++中使用模板的正确/正确方法有疑问。假设我们有一个这样的模板类:templateclassFoo{public:Tadd(Tn1,Tn2);};templateTFoo::add(Tn1,Tn2){return(n1+n2);}这对于基本数据类型非常有效,例如int、double、float、char...等。Foofoo_int;std::coutfoo_double;std::coutfoo_char;std::cout但这对复杂的数据类型不太适用,比如这个:classBar{public:std::stringbar;};Barbar_1;Barbar_2;Foofoo

C++ 在 priority_queue 中使用 std::greater() 并排序

为什么这两种情况的文档说的是同一件事,但它们以相反的方式声明,一个使用greater而另一个使用greater().任何人都可以解释一下吗?文档priority_queuecpplibrary说那个compcanbeComparisonobjecttobeusedtoordertheheap.Thismaybeafunctionpointerorfunctionobjectpriority_queue,greater>minheap;//workspriority_queue,greater()>minheap;//whyfail?文档cpplibrarysort说的是同一件事,即co