这个关于C++类模板的问题

#include<iostream>usingnamespacestd;template<classT>classM{private:staticintTa[30];in... #include<iostream>
using namespace std;
template<class T>
class M
{
private :
static int Ta[30];
int n;
char k[20];
public:
M()
{n=0;k[20]="there isn't this number"}
T search(T N)
{
T*p1=Ta;
if(p1==N)return n+1;
if(p1!=N) {p1++;n++}
if(p1==0) return k;
}
};template <class T>
int M<T>::Ta[30]={1,2,66,8,5,6,21,334};
void main()
{ int m;
cout<<"请输入一个你要在数据库中查找的正整数"<<endl;
cin>>m;
M<int>INTA();
cout<<INTA.search(m)<<endl;
system("pause");
}
倒数第二行系统报错了,在.search右边没有类或者联合类之类的东西 明明我定义了啊 为什么会这样
展开
 我来答
carea
2016-12-15 · TA获得超过459个赞
知道小有建树答主
回答量:395
采纳率:65%
帮助的人:106万
展开全部
先解释你的疑问:
//M<int>INTA();//这里这么写是初学者很容易犯的错误,C++创建对象的时候不加左右括号就是调用无参数的构造函数了。你加了左右括号就变成了一个返回类的无参数的函数了。
M<int> INTA;//这样就没有你说的问题了。
还有其他的问题的:
//{n=0;k[20]="there isn't this number"}//这里字符串后面少了分号,C语言里面的字符数组不支持复制和赋值,只能自己编写循环。C++里面使用string来实现这一目的。

最后说一下你这个程序:
程序很烂:结构不清晰,算法也没有达到目的。用C的那一套来往C++上面搬。
如果用C++写这个模板类,代码简洁明了,看起来很舒服。由于实在不知道你这个代码的具体意图(我猜可能是在静态数据里面查找一个整数,那为什么要设计成模板。难道你的模板具现化为float之后能够在int数组里查找?)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式