重载 [] 运算符的问题 (c++)
Problems with overloading [] operator (c++)
我正在尝试编写一个小的 class“数组”,但是当我想为此 class 重载 [] 运算符时遇到问题。返回值必须具有 int
值,但它具有 Array&
.
有我的代码:
Array.h:
#ifndef ARRAY_H
#define ARRAY_H
#include "QTableWidget"
class Array
{
public:
Array();
Array(int size);
Array(int size, int start, int step);
~Array();
int maxValue();
int minValue();
int averageValue();
void chooseSort();
void bubbleSort();
void setSize(int size);
int getSize();
int getValue(int pos);
void scalar(int number);
Array operator +(Array &other);
Array operator -(Array &other);
Array operator *(int number);
int& operator [](int index);
Array(const Array &other);
friend QTableWidget *operator <<(QTableWidget *widget, Array &other);
friend QTableWidget *operator >>(QTableWidget *widget, Array &other);
private:
void swap(int *a, int *b);
int *array;
int size;
};
#endif // ARRAY_H
我在 Array.cpp 中的重载运算符:
int& Array::operator [](int index)
{
return (array[index]);
}
还有我出错的函数(MainForm.cpp,我用Qt写的,不过没关系):
void MainForm::on_GetValue_released()
{
int index = ui->ValueEdit->text().toInt();
if(index > currentArr->getSize())return;
int numer = currentArr[index];
ui->ValueEdit->setText(QString::number(number));
}
我的错误是:
我应该怎么做才能得到正确答案?
我的 currentArr 是一个指针,所以我必须这样做:(*currentArr)[index];
我正在尝试编写一个小的 class“数组”,但是当我想为此 class 重载 [] 运算符时遇到问题。返回值必须具有 int
值,但它具有 Array&
.
有我的代码:
Array.h:
#ifndef ARRAY_H
#define ARRAY_H
#include "QTableWidget"
class Array
{
public:
Array();
Array(int size);
Array(int size, int start, int step);
~Array();
int maxValue();
int minValue();
int averageValue();
void chooseSort();
void bubbleSort();
void setSize(int size);
int getSize();
int getValue(int pos);
void scalar(int number);
Array operator +(Array &other);
Array operator -(Array &other);
Array operator *(int number);
int& operator [](int index);
Array(const Array &other);
friend QTableWidget *operator <<(QTableWidget *widget, Array &other);
friend QTableWidget *operator >>(QTableWidget *widget, Array &other);
private:
void swap(int *a, int *b);
int *array;
int size;
};
#endif // ARRAY_H
我在 Array.cpp 中的重载运算符:
int& Array::operator [](int index)
{
return (array[index]);
}
还有我出错的函数(MainForm.cpp,我用Qt写的,不过没关系):
void MainForm::on_GetValue_released()
{
int index = ui->ValueEdit->text().toInt();
if(index > currentArr->getSize())return;
int numer = currentArr[index];
ui->ValueEdit->setText(QString::number(number));
}
我的错误是:
我应该怎么做才能得到正确答案?
我的 currentArr 是一个指针,所以我必须这样做:(*currentArr)[index];