草庐IT

c++ - using 语句可以出现在构造函数初始化列表中吗?

如何将using语句合并到构造函数初始化列表中?例如,而不是foo::foo(inta,intb,intc):a(a),b(b),c(something_long::tada(c)){}我想拥有//Invokingsome'usingsomething_long::tada;'magicfoo::foo(inta,intb,intc):a(a),b(b),c(tada(c)){}大概这看起来有点像代码区域中所需的愚蠢的try/catch语法。在功能上,允许使用语句感觉很重要,因为something_long::tada(c)和usingsomething_long::tada;tada

c++ - 为什么这个 C++ 函数定义不需要花括号?

这个问题在这里已经有了答案:Canyoureallyhaveafunction/methodwithoutabodybutjustatry/catchblock?(2个答案)关闭3年前。我在看Stroustrup的《Programming--PrinciplesandPracticeUsingC++》,发现他包含了一个没有主花括号的函数,他自己也没有解释,网上的人都说不可能。我已经编译了代码,它工作得很好。voidf()try{}catch(...){}我希望从中得到一个编译器错误,但我没有,而且它工作正常。我正在使用C++17。

c++ - DirectX 9 HLSL 与 DirectX 10 HLSL : syntax the same?

在过去一个月左右的时间里,我一直在努力学习DirectX。所以我一直在DirectX9和10之间来回混合。我在两者中看到的主要变化之一是如何在显卡中处理vector。我注意到的一个重大变化是您如何让GPU识别您的结构。在DirectX9中,您可以定义灵活的顶点格式。您的典型设置是这样的:#defineCUSTOMFVF(D3DFVF_XYZRHW|D3DFVF_DIFFUSE)在DirectX10中,我相信等效的是输入顶点描述:D3D10_INPUT_ELEMENT_DESClayout[]={{"POSITION",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,

c++ - cin.get() 不工作

我今天写了这个简单的程序,但我发现cin.get()拒绝工作,除非有2个。有什么想法吗?#includeusingnamespacestd;intmain(){intbase;while((base36)){cout>base;}stringbase_str="0123456789abcdefghijklmnopqrstuvwxyz";for(inti=0;i如果我将cin.get()移动到嵌套循环之前,循环运行然后暂停。如果我取出一个cin.get(),程序就会结束。我正在使用最新版本的bloodshedc++dev 最佳答案 你

c++ - A aaa 之间的区别;和一个 aaa();

classA{private:stringa;public:A():a("helloworld"){};A(conststring&arg):a(arg){};voidput()const{cout那么Aaaa();和Abbb;有什么区别aaa是函数吗? 最佳答案 是的,第一个被解释为函数声明。它被称为MostVexingParse. 关于c++-Aaaa之间的区别;和一个aaa();,我们在StackOverflow上找到一个类似的问题: https://s

c++ - 请帮助我理解这个带有参数的 C++ 参数声明

我每天都使用ROOTC++库(root.cern.ch)并在浏览源代码时遇到这个函数声明:TStringTString::Format(constchar*va_(fmt),...){//etc.可以查到here.我不明白constchar*的名称中怎么会有参数或圆括号。表达式va_(fmt)后来被用作简单的constchar*,尽管它看起来像函数调用或构造函数。起初我认为它与可变参数列表有关,这对我来说也是新的,但阅读stdarg.h上的文档对解决这个问题根本没有帮助。很难通过google寻求帮助,因为我不太确定如何调用它。带有参数的声明?这不会产生任何好的结果。我以前以为我懂C++

c++ - 为什么 cin 命令在缓冲区中留下 '\n'?

这与:cinandgetlineskippinginput有关但他们不回答为什么会发生这种情况,只回答如何解决它。为什么cin会在缓冲区中留下一个'\n'但cin.getline会接受它?例如:cin>>foo;cin>>bar;//Noproblemcin>>baz;//Noproblem.但是使用cin.getlinecin>>foo;cin.getline(bar,100);//willtakethe'\n'那么为什么它不会发生在cin而会发生在cin.getline上呢? 最佳答案 因为,当你说getline时,你说你想得到

c++ - c++ 中的 friend 是相互的吗?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:FriendscopeinC++C++中的friend是相互的吗?

c++ - 这个函数定义是如何工作的?

我几天前用gperf生成了一个散列函数。我所看到的hash函数对我来说是陌生的。它是这样的(我不记得确切的语法):unsignedinthash(str,size)registerchar*str;registerunsignedintsize;{//Definition}现在,当我尝试使用C++编译器(g++)进行编译时,它向我抛出错误,因为没有声明str和size。但是这个是在C编译器(gcc)上编译的。所以,问题:我认为C++是C的超集。如果是这样,那么它也应该使用C++编译器进行编译,对吗?C编译器如何理解定义?str和size首次出现时未声明。在函数签名之后但在函数体之前声明

c++ - 没有分号的程序在 C 中编译得很好,而不是在 C++ 中为什么?

我正在使用OrwellDevC++IDE。最近我测试了一个简单的程序,其中我忘记了分号(;)但它仍然可以在C中正常编译,但在C++中却不行。为什么?这是什么原因?//Cprogramcompiles&runsfine,even;missingatendofstruct#includestructtest{inta,b};//missingsemicolonintmain(){structtestd={3,6};printf("%d",d.a);return0;}[Warning]nosemicolonatendofstructorunion[enabledbydefault]//Fol