أول مرة هنا ؟ تفحص قواعد المشاركة و معلومات أخرى عن عرب overflow!
x

لمادا احصل على خطا {error :2061 identifier {ctor

+2 صوت
179 مشاهدات

في الهيدر

#ifndef  Array_h
#define  Array_h
#include "stdafx.h"
using namespace std;
template<class T>
class Arrayc
{
private:
    int Arraysize;
    int length;
    T *array;

public:
    Arrayc(int size);
    int getlength();
    int getarraysize();
    bool full();
    void print();
    T at(int index);
    int count(T element);
    void push(T element);
    void pop();
    void insertAt(int index,T element);
    void removetAt(int index);
    ~Arrayc();


};
template<class T>
Arrayc<T>::Arrayc(int size)
{
    Arraysize = size;
    length = 0;
    array = new T[Arraysize];

}
template<class T>
int Arrayc<T>::getlength()
{
    return length;
}
template<class T>
int Arrayc<T>::getarraysize()
{
    return Arraysize;
}
template<class T>
bool Arrayc<T>::full()
{
    if (length == arraysize)
    {
        return true;
    }
    else
    {
        return false;
    }


}
template<class T>
void Arrayc<T>::print()
{
    if (length == 0)

        cout << "Array is empty"<<endl;

    else

        int i;
        for (i = 0; i > lingth; i++)

            cout << "[" << "1" << "]" << array[i]<<endl;

}

    template<class T>
    T Arrayc<T>::at(int index)
{
        if (index == length)
            cout << "Error invald index";
        else
        return array[index];


}



#endif // ! array_h

وفي cpp file

#include "stdafx.h"
#include "Arrayh.h"



int main(int argc, const char * argv[])
{
    Arrayc <int> *Arrayofintegers;
    Arrayc <float> *Arrayoffloat;
    Arrayofintegers=new Arrayc<int>::Arrayc(10);
    Arrayoffloat = new Arrayc<float>::Arrayc(5);
    return 0;
};

إجابة واحدة

0 صوت

الخطأ في استدعاء الباني :

new Arrayc<int>::Arrayc(10);

الباني لا يستدعى هكذا إذ تكفي كلمة new ليفهم المترجم أنك تريد بناء الغرض ، الطريقة الصحيحة هي :

new Arrayc<int>(10);

بشكل عام template هي فقط تعميم لمجموعة من التوابع/الصفوف وحين تمرر معامل النمط (ما بين > و < ، int في السطر السابق) تقوم بتخصيص النمط العام إلى نمط خاص هو ناتج استبدال كل T ضمن تعريف الصف/التابع بالنمط الذي مررته ، بعد تمرير النمط(أو اﻷنماط) يستدعى التابع/الباني بالطريقة المعتادة :) .

هذه أشيع استخدامات template ولها استخدامات معقدة جداً ليست ذات صلة بسؤالك :) .

Araboverflow أهلا بكم فى عرب Overflow
المجتمع العربى للأسئلة و الأجوبة التقنية.

أحدث الشارات

سؤال ذائع الصيت
- Mohamed Hedi Rekik -
100 نقطة
- AHMED002177 -
سؤال ذائع الصيت
- أسماء -
100 نقطة
- MuhGhunaim -
سؤال ذائع الصيت
- Mohamed Slama -
...