如果C ++类成员参数没有模板参数,这意味着什么?

时间:2017-01-17 18:10:02

标签: c++ templates

我见过如下代码,我对foo参数为const A &而不是const A<T> &的含义感到困惑。我怀疑这可能意味着该方法可以采用任何A,但基于A<T>未在下面的代码段中编译的事实,它看起来隐含地意味着a1.foo(a2)。 / p>

A用于A<T>成员内的变量声明时,A是否始终表示A?具体情况如何?我看到我无法使foo的返回类型A(编译错误:使用类模板'A'需要模板参数)。大多数C ++程序员会在这里使用A<T>#include <iostream> template<int T> class A { public: void foo(const A &a); }; template<int T> void A<T>::foo(const A &a) { std::cout << T << std::endl; } int main(int argc, char **argv) { A<1> a1; A<2> a2; // These compile a1.foo(a1); a2.foo(a2); // This fails to compile because no viable conversion from 'A<2>' to 'const A<1>' // a1.foo(a2); return 0; } 吗?

names[person] = { letter: value }

0 个答案:

没有答案