下面这个模板函数声明为什么是对的?

chinani 2003-01-18 01:12:52
template <class T>
T foo(int *T)

我这样声明了一个模板函数,在VC中编译没有问题!
1:我想问一下T foo(int *T)怎样解释?
2:在什么情况下要这样声明?
3:能否举个例子?

谢谢!
...全文
88 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinani 2003-01-18
  • 打赏
  • 举报
回复
谢谢!
功名半纸 2003-01-18
  • 打赏
  • 举报
回复
这样的情况只有你在函数中不使用T做类型申明别的变量就可以使用,看看这个
template <class T,class P>
T foo(int *P)
{
T t;
t = 0;
return t;
}
调用:
int Int = 34;
cout << foo<double,int> (&Int) << endl;
这样就没问题!!!
功名半纸 2003-01-18
  • 打赏
  • 举报
回复
不知道你怎么用那个T呢!·!!!
这样吗!!
template <class T>
T foo(int *T)
{
T t;
t = 0;
return t;
}
不调用编译能通过!!但如果你调用此函数!就会编译报错了!
int *声明了与摸板类名字相同的指针,一到代码中先认为摸板类是变量,T t这样就行不通了!
这样的写法不可用!!!
chinani 2003-01-18
  • 打赏
  • 举报
回复
首先谢谢您的答复!

但是我的foo()函数的参数是int *T,您的testFunc()函数参数好像是 T* 了!
xyw2278 2003-01-18
  • 打赏
  • 举报
回复
for(int i=0;i<5;i++)
ClassInst.buffer[i]='a';
ClassInst.buffer[4]='\0';

MessageBox(&(ClassInst.buffer[0]));
char t=ClassInst.testFunc(&(ClassInst.buffer[3]));
MessageBox(&t);
xyw2278 2003-01-18
  • 打赏
  • 举报
回复
// Example of the template keyword
template <class T, int i> class TestClass {
public:
char buffer[i];
T testFunc(T* p1 );
};

template <class T, int i>
T TestClass<T,i>::testFunc(T* p1) {
return *(p1++)
};

// To create an instance of TestClass
TestClass<char, 5> ClassInst;

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧