answer by Xiremaは、すでにあなたの質問に答えます。
私はちょうどあなたがオペレータの関数としてf-1
をサポートしている場合、あなたがshにいくつかの演算子があることを指摘したいですouldもサポートしています。
幸いにも、いくつかの実装を再利用して他の実装を実装することができます。ここで
は私の提案です:
struct foo
{
int a=5;
int b=4;
int c=8;
// Pre-increment
foo& operator++()
{
++a;
++b;
++c;
return *this;
}
// Post-increment
foo operator++(int)
{
foo copy = *this;
++(*this);
return copy;
}
// Pre-decrement
foo& operator--()
{
--a;
--b;
--c;
return *this;
}
// Post-decrement
foo operator--(int)
{
foo copy = *this;
--(*this);
return copy;
}
// Increment
foo& operator+=(int v)
{
a += v;
b += v;
c += v;
return *this;
}
// Decrement
foo& operator-=(int v)
{
// Use the inrement operator.
return ((*this) += (-v));
}
// Addition
foo operator+(int v) const
{
foo copy = *this;
copy += v;
return copy;
}
// Subtraction
foo operator-(int v) const
{
// Use the addition operator.
return ((*this) + (-v));
}
};
テストコード:
int main()
{
foo f1;
// Pre-increment
++f1;
// Post-increment
f1++;
// Pre-decrement
--f1;
// Post-decrement
f1--;
// Increment
f1 += 10;
// Decrement
f1 -= 20;
// Addition
foo f2 = f1 + 20;
// Subtraction
foo f3 = f2 - 50;
}
[あなたのタイプの演算子をオーバーロード]へお気軽に(https://stackoverflow.com/questions/4421706/what-are-オペレーターオーバーロードのための基本ルールおよびイディオム)を意味のある方法で使用します。 –
構造体の代わりに配列やリストが必要なようです。 –
'f-1;'は正確に何にすることを意図していますか? – user0042