草庐IT

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++ - 自动返回类型扣除警告 : why do we need decltype when return defines the type anyway?

这是一个关于elementsSize()成员函数做什么的问题,关于自动返回类型推导:#include#includetemplateclassElementVector{std::vectorelementVec_;//Otherattributes.public:ElementVector()=default;ElementVector(conststd::initializer_list&list):elementVec_(list){}autoelementsSize()//->decltype(elementVec_size()){returnelementVec_.size(

c++ - enable_shared_from_this(c++0x): what am I doing wrong?

我只是在研究即将推出的新C++标准中的智能指针。但是我没有掌握shared_from_this函数的用法。这是我所拥有的:#include#includeclassCVerboseBornAndDie2:publicstd::enable_shared_from_this{public:std::stringm_Name;CVerboseBornAndDie2(std::stringname):m_Name(name){std::coutp=vbad->shared_from_this();}并在行中抛出std::bad_weak_ptr异常std::shared_ptrp=vbad-

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++ - 当一个方法只接受 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

c++ - 什么是 : throw 0 do/mean? 是 "bad"吗?

上下文我遇到了一些代码,像这样:if(Some_Condition)throw0;我用谷歌搜索了一下,发现了其他一些使用那种看起来很奇怪的throw0形式的代码片段。我想有人会这样理解:catch(constint&e){}或者这是一个NULLptr?被捕获为void*?问题这个throw0是做什么的?它在某些方面很特别吗?我通常的偏好是抛出(或派生自)std::exception的东西。所以对我来说这看起来“不好”。它是“坏的”吗? 最佳答案 一般throw可以抛出任何类型,任何你需要用这个类型或者它的基类型来捕获它。所以从技术上

c++ - 为什么允许 "a.template foo<0>();"即使 "a.foo<0>();"已经足够了?

structA{templatevoidfoo(){}};intmain(){Aa;a.foo();//oka.templatefoo();//alsook}显然,a.foo();比a.templatefoo();更简洁、直观、更具表现力.为什么C++允许a.templatefoo();尽管a.foo();够了吗? 最佳答案 有时,在模板中,您需要编写a.templatefoo()而不是a.foo().@melpomene在评论中给出了这个很好的例子:templatevoiddo_stuff(){Ta;a.templatefoo()

c++ - 将 vector<fooType> foo[num] 移植到 Windows(无 C99)

我们可以动态分配std::vectorfoo[num];像这样吗?std::vector*lSamplesPerClass=newvector[nClasses];[...]delete[]lSamplesPerClass; 最佳答案 是的,你可以(假设你真的想要一个vector数组)。但是,如果您改为这样做,将会更安全、更易于管理:std::vector>foo(num);如果标准库可以为你做,永远不要自己做动态分配。 关于c++-将vectorfoo[num]移植到Windows(无

batch-file - Windows 脚本 : What and How to do this? 批处理文件或其他?

我想做的是在双击时在Windows中运行某种脚本(最好是.cmd文件/批处理文件),它应该在开始菜单中创建一个快捷菜单并在Windows注册表中设置一个路径(我想这就是它的名字)所以下一次,例如,我所要做的就是获取变量JAVA_HOME以获得我需要的路径。我在这方面需要的帮助只是关于如何做这些的例子,我应该看哪些教程,甚至在谷歌中搜索哪些关键术语(认真地),因为我对Windows编程非常陌生,以及什么用于什么等等.谢谢大家 最佳答案 如果您想要针对所有版本的Windows,您最好的选择是编写一个MS-DOS批处理文件(.bat)。这