operator's [] und =
Von: , Frage gestellt am So, 27. Jan 2008
Hallo Leute,
Ich möchte die Operatoren für [] und = so überladen, daß der Code
in der main() so stehen bleiben kann (Kurzfassung):
#include <iostream>
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 << "get0 = " << get0 << "\n"
<< "get1 = " << get1 << "\n";
system ("pause");
return 0;
}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
