私の目標は、foo [bar]がtype1を返し、foo [bar]がreturn2を返すようにすることです。複数の演算子のオーバーロード
私はC++でオブジェクトを書いていますが、かなりうまくいくようになっていますが、ほんの少し小さなものしかできませんが、不可能と思われます。
私のオブジェクトはストレージクラスなので、配列の添字を使って値にアクセスしています。私も割り当てる必要があるので、=演算子もオーバーロードします。しかし、私のクラスが保持する値はファーストクラスのオブジェクトであるため、多少不便です。配列の添え字のオーバーロードでは、そのまま返すことはできません。私は=演算子を処理するために中間クラスを返さなければならないが、追加の型付けなしで値を取得したい。
これを行う方法はありますか?ハッキリとしたやり方が受け入れられる。
編集:ここでは、それが再び
#include<cstdio>
#include<cstdlib>
class foo{
char* a[100];
foo(){
for(int i = 0; i < 100; i ++)
a[i] = 0;
}
char* operator[] (int location){
return a[location];
}
foo& operator[]= (int location, const char* value){
if(a[location] == 0)
a[location] = (char*) malloc(strlen(value) + 1);
else
a[location] = (char*) realloc(a[location], strlen(value) + 1);
strcpy(a[location], value);
}
};
int main(){
foo bar;
bar[20] = "Hello";
printf("bar[20] = %s\n", bar[20]);
bar[20] = "Hello There";
printf("bar[20] = %s\n", bar[20]);
printf("bar[20][0] = %c\n", bar[20][0]);
}
Output:
bar[20] = Hello
bar[20] = Hello There
bar[20][0] = H
編集を行う(必要がある)ものの例です:私は、私は違うが、実行可能な方法でこれをフレージングてみようと思います。クラスが参照されるときに戻り値の型をオーバーロードする方法はありますか?そのような場合私が持っている場合
class foo{
bool a;
bool operator /*referenced*/(){
return a
}
foo& operator=(bool b){
a = b;
}
};
int main(){
foo a;
a = b;
if(a == b)
printf("It Works!");
}
実際には動作しますか?
あなたがしようとしているかを示したコードのビットを与えることができます何をする? –
Theres an example – Kaslai