Hallo Leute,
Ich möchte die Operatoren für [] und = so überladen, daß der Code
in der main() so stehen bleiben kann (Kurzfassung):
#include
using namespace std;
class Box
{
public:
Box() : i(0) {}
~Box() {}
Box& operator= (int num);
// for writing, will be left hand:
Box& operator[] (int index);
// for reading, will be right hand:
int operator[] (int index) const;
private:
int i;
int array[10];
};
Box& Box::operator= (int num)
{
array[i] = num;
return \*this;
}
// writing
Box& Box::operator[] (int index)
{
i = index;
return \*this;
}
// reading
int Box::operator[] (int index) const
{
return array[index % 10];
}
int main()
{
Box b;
b[0] = 123;
b[1] = 456;
// error: `class Box' used where a `int' was expected
int get0 = (int)b[0];
int get1 = (int)b[1];
cout Ich denke, der op= ist das Problem: zu Beginn passt er genau, aber zum
Lesen ist er nicht geeignet, da er links eine "Box &" verlangt.
Ich kann aber den op= nicht für zwei int's
überladen, da dieser nur in einer Klasse zulässig ist.
Ich könnte mir natürlich anders behelfen. Mich würde
nun aber interessieren, ob das mit den op[] hinzukriegen ist.
Hat jemand eine Lösung?
lg
Martin B