【发布时间】:2013-05-01 22:12:28
【问题描述】:
这里是函数
template <typename T> T sum(T *x, T *y)
{
T z(0);
z=*x+*y;
return z;
}
我现在正在学习模板。
这是我在主子程序中尝试做的事情:
int i(1), j(2);
long p(12), q(3);
std::cout<<sum(&i,&j)<<" is the output\n";
std::cout<<sum(&((long)i),&q)<<" is the second output\n";
位和(&((long)i),&q) 不起作用。无论如何,我可以使用变量 i 调用函数,而不必将其值放入另一个 long 类型的变量中,而不是使用这个其他变量调用函数 sum?我可以理解我编写模板的方式,它会生成两个参数类型相同的函数。我想让它生成具有两种不同类型的参数的函数一点也不难,我想这是另一种选择。
【问题讨论】:
-
为什么你的
sum函数需要指针?为什么不只是const T&? -
我没有想到这一点,我只是想好了让我们使用指针并使第一个示例变得困难。这里是 2315,可能我不应该这样做。
-
好的,所以我很困惑为什么要将指向整数的指针(或引用)传递给函数 - 它只会毫无理由地让一切变得更加复杂。这是因为实际上,您的类型是别的东西,作为指针/引用传递是否有意义? [也就是说,在某种程度上,这是一个 XY 问题]
-
我改为使用左值引用。即使是现在,我也无法将 (long)i 作为参数,即使我正在投射它。
-
@quantum231 2315?未来 302 年 C++ 还在积极使用? 该死!!! 量子计算是否广泛可用(因此获得了你的绰号)?卡戴珊还是真人秀明星吗?
标签: c++ templates visual-c++ pointers