类中的重载运算符 [],因此它可以从模板类中的数组返回对象
Overloading operator [] in class, so it can return object from array that is in template class
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 二进制"[":"Ispit"未定义此运算符或转换为预定义运算符可接受的类型
我在模板类中尝试了这样的事情。但错误仍然存在。
Planer<T>& operator [] (int x){
return array[x];
};
我想我也需要在 Ispit 类中重载运算符 [],但我不知道怎么做。
谢谢前面的伙计们!
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++中动态分配的内存(数组对象)
- 数组对象的生存期是否在重用其元素存储时结束?
- 为什么顶点数组对象会导致错误?
- 具有纯虚函数和指针数组对象类型的父类的指针数组
- 这是使用构造函数初始化数组对象的最佳方法吗?
- OpenGL 顶点数组对象与 tinyobjloader
- 将数组/对象/结构列表从C#库中传递给C MFC应用程序
- C++ RapidJson 帮助反序列化数组对象
- ptrdiff_t可以表示指向同一数组对象元素的指针的所有减法吗?
- 检查成员函数是否返回临时对象或数组对象
- 为什么 std::variant 不能容纳数组对象类型,而联合可以?
- 当数组对象以函数参数传递时,为什么复制构造函数会自称
- 如何使用箭头指针打印出一类数组对象,这些对象中有多个分数
- C++17 std::shared_ptr<> 类数组对象的重载运算符 []
- 添加两个具有运算符重载的数组对象,从而导致分段错误
- opengl:两个不同的矢量可以绑定到同一个顶点数组对象吗
- 使用相同的数据填充数组对象或使用指针
- 方法用于最快的分配,并且不需要将动态大小的数组对象作为局部变量
- 如何将2d数组对象传递给c++中的函数
- ReferenceTable溢出(jni-android),数组对象释放