找不到RCPP字符串初始化构造函数

时间:2020-09-08 16:18:04

标签: c++ clang rcpp

编辑:错误的来源是一个错字。对此表示歉意,但要感谢许多在评论中提供了宝贵的外围建议的人。

下面的代码

#include <iostream>
#include <string>
#include <cmath>
#include <math.h>
#include <cfloat>
#include <Rcpp.h>
#include <cassert>
using namespace Rcpp;

int test(){
  std::string s(2,"");
  return 1;
}

引发以下IDE错误:

no matching constructor for initialization of 'std::string'

在R中运行代码会产生不完整的段错误,但我希望以上内容就足够了。我看到在this discussion中,共识是当使用的clang版本过时(clang ++ 3.7是传递的版本)时,可能会发生这种情况。提到此discussion并看到我的机器(macos)正在运行以下clang:

Apple clang version 11.0.3 (clang-1103.0.32.59)

我不确定遇到的问题是否与上述讨论中的问题重复。

如果我不得不猜测,问题的根源可能是编译器版本,有关rcpp的问题或库冲突。

编辑:herehere是使我相信std带有默认字符串构造函数的源(有关后者,请参见fill(6))

1 个答案:

答案 0 :(得分:1)

好吗?

  std::string s(2,"");

没有匹配的构造函数来初始化'std :: string'

错误消息中的内容完全正确,std::string没有与您的int, char const *参数匹配的constructor

如果我不得不猜测,问题的根源可能是编译器版本,有关rcpp的问题或库冲突。

否,问题在于没有构造函数与您的std::string初始化尝试匹配。如果您试图进一步简化示例,即删除除您实际使用的include之外的所有<string>,那可能已经很明显了。