编辑:错误的来源是一个错字。对此表示歉意,但要感谢许多在评论中提供了宝贵的外围建议的人。
下面的代码
#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的问题或库冲突。
答案 0 :(得分:1)
好吗?
std::string s(2,"");
没有匹配的构造函数来初始化'std :: string'
错误消息中的内容完全正确,std::string
没有与您的int, char const *
参数匹配的constructor。
如果我不得不猜测,问题的根源可能是编译器版本,有关rcpp的问题或库冲突。
否,问题在于没有构造函数与您的std::string
初始化尝试匹配。如果您试图进一步简化示例,即删除除您实际使用的include
之外的所有<string>
,那可能已经很明显了。