我见过如下代码,我对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 }