模板 <int v> 类 Foo 的超类

zel*_*ell 1 c++ inheritance templates superclass

假设我有一个模板类

template <int v>
class Foo {...}
Run Code Online (Sandbox Code Playgroud)

我有一个功能

void f(...)
Run Code Online (Sandbox Code Playgroud)

接受 Foo<1>、Foo<2> 等的任何对象作为输入,我该如何定义函数?看起来

void f(Foo x) 
Run Code Online (Sandbox Code Playgroud)

不编译。Foo<1>, Foo<100>, ... 以及所有 Foo 的通用类型是什么?

Nat*_*ica 5

Foo<1>, Foo<100>, ... 以及所有 Foo 的通用类型是什么?

没有常见的类型。你也可以做f一个模板

template <int v>
void f(Foo<v> x)
{
    //code here
} 
Run Code Online (Sandbox Code Playgroud)

像上面一样,现在该功能将接受Foo您提供的任何内容。

  • @zell `Foo &lt;&gt;` 不是一种类型。模板**不是一种类型**。模板就是一个配方,一旦你的代码被编译,它甚至不会存在于二进制文件中。 (2认同)