2017-02-10 7 views
0
template <class T> 
class Planer{ 
    T array; 
    int max_stavki; 
    int broj_stavki; 

    public: 

     Planer() 
     { 
      max_stavki = 100; 
      array = new T[max_stavki]; 
      broj_stavki = 0; 
     } 
     ~Planer() 
     { 
      delete[] array; 
     } 
     void add(T& x){ 
      if (broj_stavki==max_stavki){ 
       throw NO_SPACE(); 
      } 
      else{ 
       array[broj_stavki] = x;  // here i get error 
       broj_stavki++; 
      } 
     } 
    }; 

В классе шаблона мне нужно создать массив объектов этого класса.Перегрузка оператора [] в классе, поэтому он может возвращать объект из массива, который находится в шаблоне класса

class Ispit{ 
     char* naziv; 
     int sifra = -0001; 
     char* datum; 
     int vreme; 
}; 

Но когда я хочу использовать функцию добавления из шаблона класса эта ошибка выскакивает:

Ошибка C2676 бинарное «[»: 'испить не определяет этот оператор или преобразование к типу приемлемый для предопределенного оператора

Я пробовал что-то подобное в классе шаблонов. Но ошибка все еще существует.

Planer<T>& operator [] (int x){ 
    return array[x]; 
}; 

Я думаю, что мне нужно перегрузить оператор [] в классе Ispit, но я не знаю, как это сделать.

Спасибо, ребята, впереди!

+3

Что такое 'niz'? Можете ли вы создать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) и показать нам? –

+0

Извини, мой плохой. Niz - массив, но на моем языке. Я забыл перевести это. – user3579284

ответ

1

Planer<Ispit>array Участник имеет тип Ispit, который на самом деле не представляет собой массив. Что вы намеревались для типа array? Потенциально:

template <class T> 
class Planer 
{ 
    T* array; // NOTE THAT I MADE THIS A POINTER 
    int max_stavki; 
    int broj_stavki; 
public: 
    Planer() { 
     array = nullptr; 
     broj_stavki = 0; 
     max_stavki = 0; 
    } 
    ~Planer() { 
     clear(); 
     delete[] array; 
    } 
    Planer(Planer&& other) noexcept { 
     array = other.array; 
     broj_stavki = other.broj_stavki; 
     max_stavki = other.max_stavki; 
     other.array = nullptr; 
     other.broj_stavki = 0; 
     other.broj_stavki = 0; 
    } 
    Planer& operator=(Planer&& other) noexcept { 
     std::swap(array, other.array); 
     std::swap(array, other.broj_stavki); 
     std::swap(array, other.max_stavki); 
     other.clear(); 
    } 
}; 
+0

Я забыл скопировать конструктор по умолчанию извините. – user3579284