0

これは正しく実行されないコードですが、この関数をスタンドアロンのテンプレート関数として使用するとします。

#include <iostream>
#define MAX 100
using namespace std;
int z=10;
template <class T>class A
{
    public:
        A()
        {

            cout<<"A constructor\n";
        }
        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 sort\n" << endl;
    for(int i=0;i<z;i++)
    {
        cout<<"::insert the value at"<<i<<"th location::";
        cin >> arr[i];
    }
    cout<<"you have inserted this\n";
    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;
}

この関数をスタンドアロンのテンプレート関数として使用すると機能しますが、無限ループが作成されます。

4

2 に答える 2

2

2 つの変数 z があり、1 つはグローバルで、もう 1 つはクラス内にあります。グローバルなもののみを初期化します。クラス内では、クラス変数が使用され、これは初期化されません。そのため、グローバル メソッドの場合は機能しますが、クラス テンプレート メソッドの場合は機能しません。

于 2012-06-22T07:05:27.187 に答える
0

私が知る限りzclass A.

試す

template <class T>class A
{
  public:

  A(int z_):z(z_)
  {

    cout<<"A constructor\n";
  }
  int z;
  T sort_rishi_fun(T arr[]);
};

// then in main()
A<int> a(z);
于 2012-06-22T07:00:35.117 に答える