Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++_Templates_Function Templates - Fatal编程技术网

C++ 如何使用类模板作为函数参数?

C++ 如何使用类模板作为函数参数?,c++,templates,function-templates,C++,Templates,Function Templates,我有一个类是按照 template<int a, int b> class C { public: array[a][b]; } 但当我编译时,它告诉我“使用类模板需要模板参数列表” template<int a, int b> bool DoSomeTests(C &c1, C &c2); 模板 布尔剂量仪(C&c1、C&c2); 但我也犯了同样的错误。如何解决此问题?您需要在DoSomeTests的声明中为类模板C提供参数: templa

我有一个类是按照

template<int a, int b>
class C {
public:
    array[a][b];
}
但当我编译时,它告诉我“使用类模板需要模板参数列表”

template<int a, int b>
bool DoSomeTests(C &c1, C &c2);
模板
布尔剂量仪(C&c1、C&c2);

但我也犯了同样的错误。如何解决此问题?

您需要在
DoSomeTests
的声明中为类模板
C
提供参数:

template<int a, int b>
bool DoSomeTests(C<a, b> &c1, C<a, b> &c2);
模板
布尔剂量仪(C&c1、C&c2);

类模板
C
和函数模板
DoSomeTests
都有两个
int
模板参数,但是编译器无法推断您想要将它们从函数模板映射到
C
的事实。

您需要在
剂量计测试声明

template<int a, int b>
bool DoSomeTests(C<a, b> &c1, C<a, b> &c2);
模板
布尔剂量仪(C&c1、C&c2);

类模板
C
和函数模板
DoSomeTests
都有两个
int
模板参数,但编译器无法推断您想将它们从函数模板映射到
C
的事实。

谢谢,现在我看它似乎很明显。无法推断它的原因是,你很可能是有意的:
bool DoSomeTests(C&c1,C&c2)
。这可能看起来很愚蠢,但想想矩阵/向量乘法;)如果不同的
a
b
之间的依赖性不是微不足道的,您甚至可以使用一些
enable_if
在编译时进行类型检查。谢谢,现在我看了它,它似乎很明显。无法推断它的原因是您很可能是有意的:
bool DoSomeTests(C&c1,C&c2)
。这可能看起来很愚蠢,但想想矩阵/向量乘法;)如果各种
a
b
之间的依赖性不是微不足道的,那么您甚至可以使用一些
enable_if
在编译时进行类型检查。