gpt4 book ai didi

c++ - 在类中重载运算符[],因此它可以从模板类中的数组返回对象

转载 作者:行者123 更新时间:2023-11-28 05:18:09 24 4
gpt4 key购买 nike

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;
};

但是当我想使用模板类中的函数添加时,会弹出这个错误:

Error C2676 binary '[': 'Ispit' does not define this operator or a conversion to a type acceptable to the predefined operator

我在模板类中试过类似的东西。但是错误仍然存​​在。

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

我想我也需要在 Ispit 类中重载 operator [] 但我不知道该怎么做。

谢谢前面的各位!

最佳答案

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();
}
};

关于c++ - 在类中重载运算符[],因此它可以从模板类中的数组返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42168983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com