كمك كنيد در اين اتفاق ناذر برنامه نويسي

شروع موضوع توسط sazeno ‏17 ژانویه 2006 در انجمن برنامه‌نویسی C و هم خانواده‌هایش

  1. sazeno

    sazeno New Member

    ارسال‌ها:
    25
    تشکر شده:
    2
    امتیاز دستاورد:
    1
    من اين كلاس template رو نوشتم ولي اگه به تايع main توجه كنيد متوجه مي شويد كه cout از چپ به راست عمل ميكند.
    کد (Text):
    #ifndef myList_H
    #define myList_H
    #include <stdlib.h>
    template <typename T>class myList
    {
    public:
        myList(){length = 0;}
        void add(T );
        T pop();
        int count();
        ~myList(){delete []LMembers;}
    private:
        T *LMembers;
        int length;
    };

    //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
    //Class Functions:
    template <typename T>void myList<T>::add(T item)
    {
        if(length == 0)
        {
            LMembers = new T[1];
            LMembers[0] = item;
            length = 1;
        }
        else
        {
            T *temp;
            temp = new T[length + 1];
            for (int i = 0; i < length; i++)
                temp[i] = LMembers[i];
            temp[length] = item;
           
            delete []LMembers;
            LMembers = new T [length + 1];
           
            for(int i = 0; i < (length + 1); i++ )
                LMembers[i] = temp[i];
            length++;
        }
    }
    template<typename T>int myList<T>::count()
    {
        return length;
    }

    template <typename T> T myList<T>::pop()
    {
        if(length==1)
        {
            return LMembers[0];
        }
        else
        {
        T tempMember = LMembers[0];
        T *temp;
        temp = new T[length-1];
        for (int i = 0; i < length - 1; i++)
            temp[i] = LMembers[i + 1];
        delete []LMembers;
        LMembers = new T[length-1];
        for (int i = 0; i < length - 1; i++)
            LMembers[i] = temp[i];
        length--;
        return tempMember;
        }
    }

    #endif


    #include <iostream>
    #include "test.h"
    using namespace std;
    main()
    {
        myList <int> test;
        test.add(3);
        test.add(4);
        test.add(5);
        test.add(6);
        cout << "count == "<< test.count() << " \n pop1 == " <<test.pop() << " \n count 2 == " << test.count() << " " << test.pop() << " " << test.count() << endl;
        cin.get();
        cin.get();
    }
     
    نوشته شده توسط sazeno در ‏17 ژانویه 2006
  2. stranger_in_rain

    stranger_in_rain Member

    ارسال‌ها:
    183
    تشکر شده:
    27
    امتیاز دستاورد:
    16
    خوب باید از چپ به راست عمل بکنه دیگه !!! در ضمن اگر منظورت از راست به چپه من هم تو این برنامه ایرادی نمی بینم اما بیا عملگر >> رو برای کلاست تعریف کن ببین باز هم این ایراد رو داره یا نه ...
     
    نوشته شده توسط stranger_in_rain در ‏18 ژانویه 2006
  3. sazeno

    sazeno New Member

    ارسال‌ها:
    25
    تشکر شده:
    2
    امتیاز دستاورد:
    1
    آره منم منظورم همون از راست به چپه ولي اين هيچ ربطي به سربارگذاري نداره
     
    نوشته شده توسط sazeno در ‏18 ژانویه 2006

به اشتراک بگذارید