【发布时间】:2023-04-09 14:36:01
【问题描述】:
编辑:错误的来源是错字。很抱歉造成混乱,但感谢许多在 cmets 中提供有价值的外围建议的人。
以下代码
#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 中运行代码会产生无法表达的 seg 错误,但我希望以上内容就足够了。我看到this discussion 的共识是,当使用的 clang 版本过时(clang++3.7 是传递的版本)时,可能会发生这种情况。参考了这个discussion 并看到我的机器(macos)正在运行以下clang:
Apple clang version 11.0.3 (clang-1103.0.32.59)
我不确定我遇到的问题是否与上述讨论中的问题重复。
如果我不得不猜测,问题的根源可能是编译器版本、rcpp 或库冲突。
【问题讨论】:
-
你想用你的字符串构造函数做什么?您认为哪些重载应该与 (
int,const char*) 参数列表匹配? -
顺便说一句,您不需要所有额外的包含语句,因为包括
Rcpp.h会引入这些语句——string肯定会这样做。 -
投票失败,因为 OP 对
""和''感到困惑(请参阅下面的答案)。