草庐IT

int_parser

全部标签

c++ - 最令人烦恼的解析阻止了类内初始化 std::vector<int>

这个问题在这里已经有了答案:Whycan'tmemberinitializersuseparentheses?(2个答案)关闭4个月前。C++11允许类内初始化:structFoo{std::vectorv{3};//vectorof3emptystrings};如果我们想在类中初始化一个intsvector,我们会得到其他东西:structFoo{std::vectorv{3};//vectorofoneelementwithvalue3};这个问题好像是语言的限制,asdiscussedinpreviousquestions.但是,如果这不是类内初始化,我们将能够使用圆括号而不是大

c++ - 为什么我应该更喜欢类中的 static constexpr int 而不是类级整数常量的枚举?

C++17更新:staticconstexpr变量是隐式内联,因此不需要外部定义。原始问题:假设我有一个常量列表,例如structCls{staticconstexprintN=32;staticconstexprintM=64;};这当然建议我为这些添加定义以避免可能发生的ODR使用问题,因此我需要:constexprintCls::N;constexprintCls::M;为什么应该我更喜欢这个structCls{enum:int{N=32,M=64};};这让我免于ODR使用的麻烦,因为N和M更真实地只是常量,而不是对象本身(如果这是标题,那就更重要了-only)并且更短。我可以

c++ - 为什么 std::tuple<int> 不能简单复制?

内置thisonlinecompiler,以下代码:#include#include#includeintmain(){std::cout>::value>::value>::value>::value输出:0000我在VisualStudio2015中得到了相同的结果。为什么会这样?POD类型的std::tuple,更不用说简单的std::pair,是否有正当理由不能被简单复制?我假设它们的实现提供了一些自定义赋值运算符,但它们与编译器生成的默认版本有何不同? 最佳答案 就琐碎的可复制性而言,对失败的原因是标准不要求复制/移动赋值

c++ - 解析一个 int(x) 参数

这是一个带有一个int参数的简单函数:voidf(intx){}f(42);这是另一个带有一个int参数的函数:voidg(int(x)){}g(42);现在让我们将x定义为一个类型:typedefintx;voidh(int(x)){}h(42);//warning:passingargument1of‘h’makespointerfromintegerwithoutacast(这是我用gcc4.8.2观察到的行为)解析器作者如何处理这种情况?似乎经典管道Lexer->Parser->SemanticChecker->...在这里不起作用。 最佳答案

c++ - 编译器错误 C4430 : missing type specifier - int assumed

这个问题在这里已经有了答案:Resolvebuilderrorsduetocirculardependencyamongstclasses(12个答案)关闭8年前。我有这个错误:“错误C4430:缺少类型说明符-假定为int。注意:C++不支持default-int”使用此代码示例://A.h#include"B.h"classA{B*b;..};//B.h#include"A.h"classB{A*a;//errorerrorC4430:missingtypespecifier-intassumed.};

C++ - const 成员/返回 const int& 与 return int

那些C++行是什么意思?是否有其他方式来编写它们?constint&a()const;intgetA()const;谢谢。 最佳答案 这两个是promise不更改对象本身的类中成员函数的两个可能签名。在第一种情况下,它将返回一个对整数(可能是成员属性)的常量引用,引用是const意味着调用者将无法使用它来更改内部属性。第二种情况它按值返回一个整数。在语义上略有不同,但大多数情况下它们并不重要,将它们视为两个获取值的函数。对于它会有所作为的情况,请参见:classtest{public:test():m_value(){std::co

c++ - 输入: int fd = open ("file");?时fd代表什么

我正在研究C++中的I/O操作,我有一个问题。打开如下文件时:#includeintmain(){unsignedcharbuffer[16];intfd=open(argv[1],O_RDONLY);read(fd,buffer,sizeof(buffer));return0;}变量fd在将文件传递给open方法时如何将文件表示为整数?它是否代表当前文件夹中的文件?如果我打印“fd”变量,它会打印3。这是什么意思?附言。我知道还有其他几种处理文件的方法,例如stdio.h、fstream等,但这超出了本问题的范围。Ds. 最佳答案

c++ - 为什么 `std::copy` 在我的测试程序中从 char 缓冲区读取一个 int 比 `memcpy` 慢 5 倍(!)?

这是thisquestion的后续行动我在哪里发布了这个程序:#include#include#include#include#include#include#include#include#includeclassStopwatch{public:typedefstd::chrono::high_resolution_clockClock;//!ConstructorstartsthestopwatchStopwatch():mStart(Clock::now()){}//!Returnselapsednumberofsecondsindecimalform.doubleelapse

c++ - `int main(int argc, char* argv<::>)` 如何成为 main 的有效签名?

这个问题在这里已经有了答案:Howisthisbracketless/bracelesscodevalid?[duplicate](4个答案)关闭7年前。我在网站上看到intmain(intargc,char*argv)也可以用作main的签名.令人惊讶的是,以下程序:intmain(intargc,char*argv){return0;}编译时会发出GCC中的任何警告以及clang。它还在C++中编译。那么,intmain(intargc,char*argv)是怎么回事?是main的有效签名?

c++ - "AnySTLContainer<int>"c++ 的模板

我正在寻找一种方法来提供采用模板化(STL)容器的函数,但要求其元素属于特定类型(例如int)。这些函数调用应该是有效的:std::vectorArgument;voidfoo(Argument);std::listArgumentvoidfoo(Argument);std::dequeArgumentvoidfoo(Argument);...etc这些函数调用应该是无效的:std::vectorArgument;voidfoo(Argument);std::listArgumentvoidfoo(Argument);std::dequeArgumentvoidfoo(Argument