D语言中的一元取反运算符重载

5

代码

struct test
{
   private real value;

   this(real value)
   {
      this.value = value;
   }

   bool opUnary(string op)() if (op == "!")
   {
      return !value;
   }
}

void main()
{
   test a = 123.12345;
   bool b = !a;
}

编译错误

prog.d(19): Error: expression a of type test does not have a boolean value

http://ideone.com/Kec81

同时还在 dmd 2.053, 2.054 上进行了测试。

我的代码有什么问题吗?

1个回答

3

2
谢谢。看来你是对的。这是来自D编程语言的一个例子。我需要重载cast(bool)。 - Stas
2
注意所有逻辑运算符都不在其中。我记得这是有意为之的。 - BCS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接