このコードを実行するEquation(10, 20)
と、コンソールに次のように出力されます。
public class Equation
{
public int a;
public int b;
public override string ToString()
{ return "Equation(" + a + ", " + b + ")"; }
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(new Equation() { a = 10, b = 20 });
Console.ReadLine();
}
}
Equation
のテストで使用されているインスタンスをサポートしたいif
ので、への暗黙的な変換を許可しましたBoolean
:
public class Equation
{
public int a;
public int b;
public override string ToString()
{ return "Equation(" + a + ", " + b + ")"; }
public static implicit operator Boolean(Equation eq)
{ return eq.a == eq.b; }
}
class Program
{
static void Main(string[] args)
{
if (new Equation() { a = 10, b = 10 })
Console.WriteLine("equal");
Console.WriteLine(new Equation() { a = 10, b = 20 });
Console.ReadLine();
}
}
ただし、問題は、 で使用すると、 を使用WriteLine
して印刷する代わりに にEquation
変換されることです。Boolean
ToString
への暗黙的な変換を許可しBoolean
、引き続き をWriteLine
使用して表示するにはどうすればよいToString
ですか?
アップデート
この質問は、 SymbolicC++Equation
のクラスに触発されています。以下のコードは、を介して表示したり、 のテストで使用したりできることを示しています。Equation
cout
if
auto eq = x == y;
cout << eq << endl;
if (eq)
cout << "equal" << endl;
else
cout << "not equal" << endl;
したがって、これはC++で何とか可能です。