Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编译C+时出现问题+;模板代码_C++_Templates - Fatal编程技术网

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>