草庐IT

FOO_VIRTUAL_IMPL

全部标签

c++ - 为什么我不能用 foo(char* args[]) 做 foo({"asd","asd1"})?

我正在阅读C++Primer,在第6.2节中它说:"Parameterinitializationworksthesamewayasvariableinitialization."然而当我这样做时:voidfoo(char*args[]){return;}intmain(){char*args[]={"asd","dsa"};//ok.foo({"asd","dsa"});//error.}这是为什么? 最佳答案 作为@T.C.在评论中指出,函数参数中的args被转换为char**因为函数不能将数组作为参数。既然你做不到char**

c++ - constexpr 和 virtual

我一直在想为什么constexr和virtual是互斥的,有人补充说:...constexprisallaboutexecutionatcompiletime;ifwe'reexecutingthefunctionatcompiletime,weobviouslyknowthetypeofdatauponwhichit'sactingatcompiletimeaswell,solatebindingclearlyisn'trelevant.但是,即使在编译时,动态类型也可能与静态类型不同,并且可能存在需要动态类型的情况:classA{public:/*virtual*/constexp

C++ 处理特定的 impl - #ifdef vs 私有(private)继承 vs 标签调度

我有一些类实现了一些我有的计算针对不同的SIMD实现进行优化,例如阿尔托和上海证券交易所。我不想用#ifdef...#endif污染代码块对于我必须优化的每种方法,所以我尝试了其他几种接近,但不幸的是,我对它的转变方式不太满意出于我会尽力澄清的原因。所以我正在寻找一些建议关于如何改进我已经完成的工作。1.粗略的不同实现文件包括我有相同的头文件,描述了不同的类接口(interface)纯C++、Altivec和SSE的“伪”实现文件仅用于相关方法://Algo.h#ifndefALGO_H_INCLUDED_#defineALGO_H_INCLUDED_classAlgo{public:

c++ - 在包 BAR 中使用 R 包 FOO 中的 C++ 代码的最佳方法

我正在尝试使用Rcpp定义一个函数来加速。情况如下:我有一个FOO包,里面有很多C++代码(我自己的包,目前没有使用Rcpp),它定义了一组函数,例如foo_a和foo_b。在另一个包BAR(使用Rcpp)中,我正在定义一个函数(使用Rcpp属性),我想在其中调用函数foo_a和foo_b。我该如何解决这个问题?在其他帖子中看了一下我发现我以某种方式在FOO中包含头文件并在BAR中使用属性//[[Rcpp::depends(FOO)]],但我似乎错过一些点。有关如何操作的任何提示?最好的拉斯编辑:感谢您的评论,我喜欢KevinUshey的方法并尝试实现它。然而,经过一些编码后,我意识到

c++ - 为什么 C++ 中的虚函数称为 'virtual' ?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。所以我对C++中虚函数的概念和像this这样的线程是新手做好销售这个概念。好的,我相信。但是为什么虚函数被称为“virtual”呢?我的意思是这样的功能是“具体的”像往常一样的功能/方法不是吗?如果有人能解释这个词的选择用“虚拟”来命名这个概念,那就太好了。

c++ - 是否可以在不对抽象的父类中的函数使用 virtual 关键字的情况下覆盖 C++ 子类中的函数?

classParent{public:voidfunc1();//Completemeaningfuldefinitioninparentgiven.virtualHRESULTfunc2()=0;//BcozofthisfunctionParentclassisabstract.};classChild:publicParent{public:voidfunc1();//Differentdefinitioninchild.};这在C++中可行吗?我正在重写func1(),它不是虚拟的,它已经在父抽象类中有一个定义。 最佳答案 [

c++ - decltype(auto) foo() 在没有任何警告的情况下返回本地引用

在使用现代C++中的示例时,我编写了以下代码。#include#includestaticintcount=0;classCounter{public:Counter(){++count;};Counter(Counter&r){++count;};Counter(Counter&&r){++count;};~Counter(){--count;};voidfoo(){};};decltype(auto)foo_warn(){Counterc;return(c);//Warningaboutreturninglocalreference}decltype(auto)foo_no_war

c++ - 从 boost::archive::text_oarchive_impl 和 boost::archive::text_iarchive_impl 派生自定义存档类

注意:Boost的存档方案基于对称的输入和输出存档类。一直写这两者很乏味,所以我将使用?archive来表示oarchive和iarchive。总结:将自定义存档的基类从binary_?archive_impl更改为text_?archive_impl后,当编译器实例化时,我的自定义存档类不再“找到”>serialize(...)我的其他类中的方法。背景:我的应用程序使用binary_?archive_impl的子类成功地读取和写入文件到磁盘(文档和/或代码注释建议这优于从binary_?archive派生)。我需要从二进制文件格式切换到文本格式,因此我将自定义存档的基类切换为text

c++ - 当一个方法只接受 Foo *const 时,我应该 const_cast "this"吗?

我有一个类Foo这是一个self引用的树状结构(最低限度):classFoo{public://Getsthischild'spositionrelativetoit'sparent.intgetPosition()const{returnparent->indexOf(this);}intindexOf(constFoo*constchild)const{returnchildren.indexOf(child);//thislinecausesanerror.}private:Foo*parent;QListchildren;}行returnchildren.indexOf(chi

c++ - 不能为 std::basic_string<T> foo = "foo"推导出 T = char?

问题:在下面的代码中,第一个示例的模板参数类型推导似乎失败了,但第二个示例却没有。我不明白为什么第一个样本无法推断出T=char.我会认为T从"foo"转换时可以推导出至std::bacis_string,但即使这不起作用,我也提供了第二个函数参数,我认为它会明确约束T至char.为什么它会失败?Doesnotwork:#include#includetemplatevoidprint(conststd::basic_string&a,conststd::basic_string&b){std::cout错误:string.cpp:14:5:error:nomatchingfuncti