【发布时间】:2020-11-21 15:56:46
【问题描述】:
我目前正在进行一项练习,我应该在我的所有函数中使用模板矩阵作为参数,并在标题中强制使用所需的数据类型。我真的不知道该怎么做。 有一个带有以下函数的标题和一个具有相同语法的第二个函数(如果相关,还有相同的模板名称?):
template <typename multityp> void matsum( multityp **, multityp **, multityp **, int, int );
template void matsum <int> (int**, int**, int**, int, int);
template void matsum <double> (double**, double**, double**, int, int);
template void matsum <bool> (bool**, bool**, bool**, int, int);
编译时,我在以下函数中收到错误“变量或字段'matsum'声明无效”,用于“multityp”,我将其放置在另一个标头中,然后出现多个“变量未声明”错误:
void matsum ( multityp **matrix1, multityp **matrix2, multityp **ergebnis, int zeilen, int spalten ){
//Does stuff
}
【问题讨论】:
-
你能提供一个完整的可重现的例子吗?仅从那些代码sn-ps很难找到问题。
-
看这个答案,可能是
multityp没有声明:stackoverflow.com/questions/364209/…。鉴于上面如何使用multityp,您是否在void matsum之前缺少template <typename multityp>? -
@DanielLangr 这实际上是该函数的所有代码,所有其他代码都与在结构上与该函数完全相同的其他函数相关。唯一要添加的是带有#ifndef [...] 的标头的守护者,因此将其键入.hpp 并编译应该会给出提供的错误。
-
@parktomatomi 好吧,现在我觉得有点愚蠢......我并没有真正想到
template <typename multityp>作为函数头的一部分,所以我把它留给定义身体。现在可以了!
标签: c++ templates c++17 typename