C++ 编译C+时出现问题+;模板代码
我有以下模板:C++ 编译C+时出现问题+;模板代码,c++,templates,C++,Templates,我有以下模板: template<class Matrix> Matrix horizontal_join (const Matrix& m1, const Matrix& m2) { ASSERT (rows (m1) == rows (m2), "unequal number of rows"); typedef typename Matrix::value_type Scalar; Matrix r (rows (m1), nbcol (m1) + nbco
template<class Matrix>
Matrix horizontal_join (const Matrix& m1, const Matrix& m2) {
ASSERT (rows (m1) == rows (m2), "unequal number of rows");
typedef typename Matrix::value_type Scalar;
Matrix r (rows (m1), nbcol (m1) + nbcol (m2));
for (unsigned i=0; i<nbrow(m1); i++) {
for (unsigned j=0; j<nbcol(m1); j++)
r(i,j)= m1(i,j);
for (unsigned j=0; j<nbcol(m2); j++)
r(i,j+nbcol(m1))= m2(i,j);
}
return r;
}
我不理解这个错误。在我看来,我不知道如何调用模板
提前感谢您的建议,
madalina我想问题在于这里的预处理器宏的组合(这是否正确,在类型之前是否有宏的名称?) 我建议您需要使用一些更一致的命名,并支持typedef而不是macro,因为它不会有这个问题:
typedef matrdse<double> MxPoly;
typedef matrdse MxPoly;
#定义matrdse MxPoly代码>
一个分号到很多这是实际代码吗?你把
#define
(这本身就是个坏主意)颠倒过来了。应该是
#define MxPoly matrsde<double>
#定义MxPoly matrsde
您是否包含了该模板的标题?是的,我已经,我忘了在这里的问题中包含标题。对不起,请使问题的标题更具描述性。“使用模板”几乎不知道它是关于什么的。建议:“调用C++模板函数时的错误混淆”可能是在命名空间内声明了模板,用复制粘贴粘贴实际代码,而不是用近似方法来输入相同的答案是一个很好的主意!宏#define matrdse MxPoly;告诉预处理器将令牌matrdse
替换为令牌MxPoly代码>我使用了typedef matrdseMxPoly;很抱歉输入错误。polymonal\u t
与double
相同吗?如果不是,那就是你的问题。是的,这确实是个错误。我需要typedef matrdse MxDouble;对于与此双矩阵一起使用的模板,实际上不是多项式矩阵。
#define matrdse<double> MxPoly;
B=horizontal_join<MxPoly>(A,AT);
B=horizontal_join<matrdse<double>>(A,AT);
B=horizontal_join<MxPoly >(A,AT);
typedef matrdse<double> MxPoly;
#define MxPoly matrsde<double>