打字问题 - 页 7

 
Dmitry Fedoseev:

人们有什么问题呢?)我将长命百岁!

顺便说一下,写d=array[5].to_double()比d=(double)array[5]简单多了,只要按一个点 就可以了。但我们不是在寻找简单的方法。

为什么要写d=(double)array[5]?这就是我们的想法--不要去管这些琐事。下面是一段真实的代码。

MYCRTMFLT(i+1, chart[MYSEG(MYSCNT-i).start].time,
               chart[MYSEG(MYSCNT-i).start].price,
               chart[MYSEG(MYSCNT-i).top].time,
               chart[MYSEG(MYSCNT-i).top].price, 
               chart[MYSEG(MYSCNT-i).top].price>chart[MYSEG(MYSCNT-i).start].price?
                 MYCLRUP : MYCLRDOWN, STYLE_SOLID, true);

chart[index]返回结构{price; time} 而我为什么要一直给它加上.time/.price,因为在大多数情况下,你可以从上下文中理解它?是的,有时你需要提示(如倒数第二行),但在大多数情况下,生活会更轻松,写作也会减少。

 
Dmitry Fedoseev:

人们有什么问题呢?)我将长命百岁!

顺便说一下,写d=array[5].to_double()比d=(double)array[5]容易得多只是要按一下但我们不是在寻找简单的方法。

是的,当然,当人们在编译时已经知道d不可能是任何东西,而是双数时,就必须写d=(双数)数组[5]。 老鼠哭着求饶,但还是继续咬着仙人掌......

 
Ilya Malev:

是的,当然,写d=(double)array[5]是必须的,因为在编译过程中已经知道d 不能是任何东西,只能是double......老鼠哭着求饶,却一直啃着仙人掌......

在C++中,他们将Oregatog<=>重载为d,啃咬和不哭;-)

PS/,考虑到关联性和优先级,使用<<运算符是更合适的。
 
pavlick_:

为什么要写d=(double)array[5]?这就是我们的想法--不要去管这些琐事。下面是一个真实的代码片段。

chart[index]返回结构{price; time}.而在大多数情况下,我们可以从上下文中了解到,为什么我一直要给它加上.time/.price?是的,有时你需要提示(如倒数第二行),但在大多数情况下,生活会更轻松,写作也会减少。

程序员打算重载(double),使array[5]返回数字double,而不是某个对象难道不是这样吗?

在给定的例子中,这个背景在哪里,我们可以理解它?可能是,MYCRTMFLT参数类型?这是一个关于返回值类型的重载。

 
fxsaber:

如果你真的想,你可以这样做

等。

 _W(Color)[2] = (uchar)230;              // Записали по смещению 2 значение (uchar)230.
  PRINT(Color)                           // Убедились, что Color теперь C'241,248,230'
这不是和Print(ColorToString(Color&(uint(-1)&65535)|(230<<16))一样吗

我担心如果我继续研究你的代码,我会打破我的大脑。

我的意思是,你的方法中的一切都令人钦佩(不是开玩笑),除了大量的大写字母与下划线和上下文解决操作:)

我认为,如果允许它(上下文决议的操作)超载,你和你的图书馆将进入星际:笑。

 
Maxim Kuznetsov:

PS/,由于关联性和优先级的关系,使用<<运算符是更合适的。

坦率地说,我也想到了这一点。用">>"超载,不受影响。但这并没有消除允许重载T()的可取性

 
Dmitry Fedoseev:

根据我的理解,他们将在这里进行重载, 所以array[5]将返回的不是某个对象,而是数字双难道不是这样吗?

在这个例子中,哪里有这种可以被理解的背景?是MYCRTMFLT参数类型吗?这是对返回值类型的一个重载。

我完全看不出有什么问题。

double d;
d = chart[i];  // call operator double

void f(datetime t);
f(chart[i]);  // call operator datetime

宏将以一些标识符或函数调用 结束,编译器将理解对它的期望。如果它不这样做(编译错误,并为模棱两可而发誓),那么你可以随时帮助它:chart[i].price

 
Ilya Malev:

是的,当然,我们必须写d=(double)array[5],而在编译过程中,我们已经知道d不可能是任何东西,而是double......老鼠哭了又哭,却一直在啃着仙人掌......

除了d之外,还有一个名称为数组的东西。

当编译器警告说分配了不适当的类型时,这一点也不坏。我们应该向编译器表明,写这段代码的人对结果负全责,这样他们以后就不会抱怨没有编译器生成的警告 了。

 
pavlick_:

我完全看不出有什么问题。

...

我也不知道。
 
Dmitry Fedoseev:

编译器对分配不适当的类型发出警告,这一点也不坏。我们需要向编译器表明,写这个东西的人要对结果负全责,这样他们以后就不会抱怨没有编译器的警告 了。

只是在这种情况下,他自己为这个赋值定义了operator double(){...}方法,显然不是为了以后能在double类型的变量后面写上(double)或者得到编译器的警告。

总的来说,对话显然是在绕圈子,让我们希望类型重载最终会被允许,我个人不会介意为了启用它,我在选项的某个地方打上勾,并确认 "我同意对结果负全责"。