gpt4 book ai didi

c++ - 返回一个模板,没有匹配的调用函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:36 24 4
gpt4 key购买 nike

我正在使用 Armadillo lib for linear algebra我是 C++ 的新手。

需要在 std::String 中序列化一些矩阵(以便将其保存在一些 xml 中)并且有一些 ready method that take a stream .

由于我不习惯阅读充满流字符串操作的 C++ 代码(我是一名 Python 程序员),我决定制作一些使用字符串的方法并隐藏流内容以提高我的代码可读性。

为了提高我的 C++ 知识,我决定尝试使用模板为所有 Armadillo 类创建一个方法:mat、rowvec、colvec(它们都有 .load() 和 .save())

我决定将这些方法写在一个单独的文件 utils.h 中,它在未来的项目中也应该有用!

问题出在第二种方法上:

using namespace std;

// 1°
template<typename Matrix>
string matrix_to_string(Matrix& m) {
stringstream ss;
m.save(ss, arma::arma_ascii);
return ss.str();
}

// 2°
template<typename Matrix>
Matrix matrix_from_string(string& s) {
stringstream ss;
ss << s;
Matrix m;
m.load(ss, arma::arma_ascii);
return m;
}

第一种方法完美运行,但使用第二种方法..如果我尝试使用它,我会收到错误消息:

no matching function for call to ‘matrix_from_string(std::string&)’

我是这样调用它的:

mat prior;
string s = XML.getValue("prior", ""); // my XML lib, it works fine
prior = matrix_from_string( s );

发生了什么事?

最佳答案

换行

prior = matrix_from_string( s );

prior = matrix_from_string<mat>(s);

关于c++ - 返回一个模板,没有匹配的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9429467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com