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;
};
但是当我想使用模板类中的函数add时会弹出这个错误:
错误C2676二进制&#39; [&#39;:&#39; Ispit&#39;没有定义此运算符或转换为预定义运算符可接受的类型
我在模板类中尝试过类似的东西。但错误仍然存在。
Planer<T>& operator [] (int x){
return array[x];
};
我想我也需要在Ispit课程中重载operator [],但我不知道如何。
谢谢你们在前面!
答案 0 :(得分:1)
Planer<Ispit>
&#39; 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();
}
};