このコードを実行する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変換されることです。BooleanToString
への暗黙的な変換を許可しBoolean、引き続き をWriteLine使用して表示するにはどうすればよいToStringですか?
アップデート
この質問は、 SymbolicC++Equationのクラスに触発されています。以下のコードは、を介して表示したり、 のテストで使用したりできることを示しています。Equationcoutif
auto eq = x == y;
cout << eq << endl;
if (eq)
cout << "equal" << endl;
else
cout << "not equal" << endl;
したがって、これはC++で何とか可能です。