jjzjj

c++ - 这个结构继承的类型是什么?

所以thisexample来自:http://en.cppreference.com/w/cpp/utility/variant/visit声明特殊类型:templatestructoverloaded:Ts...{usingTs::operator()...;};templateoverloaded(Ts...)->overloaded;这里构造为r值:std::visit(overloaded{[](autoarg){std::cout我正在尝试弄清楚这是如何工作的。overloaded从这里继承的类型是什么?它看起来像一个lambda数组,但我不明白它怎么会有一个operator

c++使用va_arg调用父类(super class)构造函数

我有一个基类,其中包含一个带有可变参数列表的构造函数:classSuper{public:Super(intnum,...);...}现在,在我的子类构造函数中,我需要以某种方式调用这个父类(superclass)构造函数,但我该怎么做呢?通常的事情自然是行不通的:classSub{public:Sub(intnum,...):Super(???){...}...}那么我应该输入什么而不是???我确实有另一个接受vector的构造函数,但有这样一个构造函数是客户的直接要求。 最佳答案 与任何变量函数一样,也始终提供列表版本:void

c++ - 声明为 consts 的函数 args 随定义变为非常量

这个问题在这里已经有了答案:Whydoesafunctiondeclarationwithaconstargumentallowcallingofafunctionwithanon-constargument?(4个答案)关闭4年前。代码classA{public:voidf(constinti);};voidA::f(inti){std::cout为什么编译器在这种情况下不报错?为什么定义会覆盖常量参数?此外,当参数的类型为reference(&)时,编译器会抛出错误,但在这种情况下为什么不呢?是否有任何编译器标志可以对这些提到的情况发出警告?我对编译器错误POV更感兴趣。因为可以很

c++ - 向可变参数宏添加默认参数

是否可以在可变参数宏中的变量参数之前添加默认参数?例如我有类似宏的版本#defineMACRO(arg1,...)func(arg1,##__VA_ARGS__)我想在变量参数之前的宏中再添加2个默认参数,这样它就不会影响以前的版本。喜欢:#defineMACRO(arg1,arg2="",arg3="",...)func(arg1,arg2,arg3,##__VA_ARGS__)如有任何帮助,我们将不胜感激。 最佳答案 我认为这是不可能的。编译器/预处理器如何知道第二个和第三个参数是变量参数的一部分还是覆盖默认值?这就是为什么具有

c++ - 当没有传递任何参数时,#__VA_ARGS__ 应该生成什么?

示例代码:#defineFOO(...)Youpassed:#__VA_ARGS__FOO(1,2,3)FOO()使用VisualC++(版本14CTP)进行预处理,得到:Youpassed:"1,2,3"Youpassed:在最后一行,#__VA_ARGS__变成了虚无。我希望它变成“”。对于应该发生的事情是否有明确的引用?我用Google搜索了很多,但没找到。任何建议的解决方法也会很有用。 最佳答案 根据6.10.3.2#运算符(C11):Semantics2-[...]Thecharacterstringliteralcorr

c++ - std::is_constructible<T, Args> 是如何实现的?

这个问题在这里已经有了答案:C++98/03std::is_constructibleimplementation(4个答案)关闭5年前。到目前为止,我在网上找不到任何ELI5。对于一个学习项目,我想实现我自己的is_constructible。有人可以解释一下它是如何工作的吗?

c++ - C++ 子函数中的纯虚函数和未使用的参数

我有以下内容:classParent{public:virtualboolfoo(vectorarg1,vectorarg2)=0;};classChild:publicParent{public:boolfoo(vectorarg1,vectorarg2);};//arg1andarg2notused-GIVESWARNINGboolChild::foo(vectorarg1,vectorarg2){returnfalse;}没有foo(...)的Parent实现,因为它是一个纯虚函数。parent说foo有两个vector参数。child使用两个字符串参数正确地实现了它,但没有使用

c++ - 在 C++ 中实现 sql 语句绑定(bind)的最佳方法

好的,所以我正在用c++0x编写一个DB包装器,API在C中。我已经准备好可以在运行时绑定(bind)的语句。我想在对包装器的1个函数调用中绑定(bind)并执行语句。虽然我最初是使用变体模板。但是根据我看到的文档,我还没有找到如何将作为模板类型输入的类型限制为固定集(int、string、double),以及如何能够对这些类型执行基本逻辑。类似(伪代码)foreacharginargsifarg1==std::stringbindToString(arg);elseifint...谢谢 最佳答案 利用函数重载。voidbind(s

c++ - 将 "this"参数显式传递给方法调用

是否可以在C++调用类方法中显式传递第一个“this”参数?像这样:structA{voidsome(){}};....Aa;A::some(&a);//~a.some();对于合理的问题“为什么?”:我需要实现std::bind模拟,它可以很好地处理这样的结构:voidf(int);bind(f,3);但这行不通:bind(&A::some,&a);更新:伙计们,我的问题显然不是很清楚。我知道如何使用std::bind,我想知道它如何处理显式传递给它的参数的结构:std::bind(&A::some,&a); 最佳答案 这是一个调

c++ - C++ 中的异常处理 Terminate 在抛出 'char const*' 的实例后调用

错误:抛出“charconst*”实例后调用终止终止应用程序已要求运行时以不寻常的方式终止它。请联系应用程序的支持团队。当我这样做时,我不确定是什么导致编译器崩溃。有任何想法吗?对编程有点陌生。#include#includeusingnamespacestd;//TemplateforMaximumtemplateXMaximum(Xarg1,Xarg2){if(arg1>arg2)returnarg1;elsereturnarg2;}//TemplateforMinimumtemplateMMinimum(Marg1,Marg2){if(arg1>arg2)returnarg2;e