从模板类调用函数时形成的无限循环,请任何人解释
Infinite loop formed while calling a function from a template class,Please anybody explain
这是一个无法正常运行的代码,但如果我们将此函数用作独立的模板函数。
#include <iostream>
#define MAX 100
using namespace std;
int z=10;
template <class T>class A
{
public:
A()
{
cout<<"A constructorn";
}
int z;
T sort_rishi_fun(T arr[]);
};
template <class T>T A <T>::sort_rishi_fun( T arr[])
{
for(int i=0;i<z;i++)
{
for(int j=0;j<z;j++)
{
if(arr[j+1]<arr[j])
{
T temp;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
int main()
{
int z=10;
int arr[100];
cout << "nEnter the number you wanted to be sortn" << endl;
for(int i=0;i<z;i++)
{
cout<<"::insert the value at"<<i<<"th location::";
cin >> arr[i];
}
cout<<"you have inserted thisn";
for(int i=0;i<=z;i++)
{
cout<<arr[i]<<endl;
}
A<int> a;
a.sort_rishi_fun(arr)
for(int i=0;i<=z;i++)
{
cout<<arr[i]<<endl;
}
return 0;
}
如果我们将此函数用作独立的模板函数,那么它将起作用。但它现在将创建一个无限循环。请解释任何人。
你有两个变量 z,一个是全局变量,另一个变量在类内。您只初始化全局的。在类内部,使用类变量,并且不初始化。这就是为什么它在全局方法时有效,但在类模板方法时不起作用的原因。
据
我所知,您似乎从未在class A
中初始化z
。
尝试
template <class T>class A
{
public:
A(int z_):z(z_)
{
cout<<"A constructorn";
}
int z;
T sort_rishi_fun(T arr[]);
};
// then in main()
A<int> a(z);
相关文章:
- 过载'operator new'如何导致无限循环?
- C++正则表达式无限循环
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 遍历链表时的无限循环
- 循环链表:无限循环
- 比较两个字符串后卡在无限循环中
- 在做一段时间内检查字符的无限循环
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 在这个无限循环中,当输入 0 时终止,当输入 int 范围之外的任何内容时,程序行为不正常
- 可能的无限循环
- 超出 int 的值范围后的无限循环
- 为什么这段代码会导致无限循环?
- 运行无限循环的最小二叉树问题
- 在分配和发布递增循环迭代器时C++无限循环(gcc 错误?
- 连接线程时的无限循环
- 为什么这种方法会进入无限循环?
- 由于QTextStream的无限循环
- Qt 在另一个线程中无限循环
- 从文件 C++ 读取时的无限循环
- 从模板类调用函数时形成的无限循环,请任何人解释