将字符串传递给函数

时间:2014-05-03 15:42:20

标签: c++ eclipse string

我正在尝试将一个字符串传递给一个函数,当我在Visual Studio中使用它时工作正常但我需要在eclipse CDT作为我的IDE中运行我的代码。选择eclipse的原因是我需要在linux环境中访问matlab的engine.h,这可以通过eclipse实现。

我正在调用一个函数MputVar2d(x, "x");,其中xvector <vector<double> >"x"是一个字符串。我的函数写在不同的头文件中:

template <typename T>
void MputVar2d(const vector <vector<T> > &var, string name){
    extern Engine *ep;
    int row = var.size(), col = var[0].size();
    mxArray *matlab = mxCreateDoubleMatrix(row, col, mxREAL);
    T *pa = mxGetPr(matlab);
    for (int j = 0; j < var[0].size(); j++){
        for (int i = 0; i < var.size(); i++){
            pa[i * row + j] = var[i][j];
        }
    }
    engPutVariable(ep, name.c_str(), matlab);
}

我运行代码时出现以下错误:

Invalid arguments:
Candidates are:
void MputVar2d(const std::vector<std::vector<#0,std::allocator<#0>>,std::allocator<std::vector<#0,std::allocator<#0>>>> &, std::basic_string<char,std::char_traits<char>,std::allocator<char>> &)

我尝试将我的函数作为MputVar2d(x, string("x"));执行,或者将字符串定义为std::string&,但它仍然会出错。

1 个答案:

答案 0 :(得分:0)

第二个参数是一个非const字符串引用,由错误消息判断。你应该把它变成const string&amp;除非您正在更改函数中的字符串并希望调用者看到更改。

如果您需要更多详情,我会在今天晚些时候详细说明。为了快速修复,只需将函数更改为const string&amp;姓名,你会没事的。