错误、漏洞、问题 - 页 2325

 
Ilyas:
是否有充分的理由放弃运营商->?
 
TheXpert:
是否有任何充分的理由放弃运营商->?

没有,没有什么严重的原因。

缺少它的唯一理由是担心不熟悉C++的用户的不成熟的思想。

 
fxsaber:

双重否定是否被编译器优化了?

是的,确实如此。

 
Ilyas:

没有,没有什么严重的原因。

没有它的唯一理由是为了照顾不熟悉C++的用户的脆弱心灵。

我认为如果你添加它,不会发生任何坏事。

你可以允许使用一个有指针的点,在这个点上没有任何歧义的时间。

当然也要发出警告。


 
如何为市场上的产品添加一个按钮:"下载试用"?
 
Koldun Zloy:

我认为如果你添加它,不会发生任何坏事。

一段时间 ,你可能被允许用指针使用一个点,那里没有歧义。

当然也要发出警告

为什么要把它变得如此复杂?这足以使.和->等同,可以互换的记录。

比喻说

#define ->   .
 
fxsaber:

是的,在你的案例中存在着模糊不清的地方。从好的方面讲,对这种事情至少应该有一个编译器警告

我的情况要简单得多,一切都很清楚。我想C++也同意这一点。

意思是,在我的 案例中,MQL意味着选项(2),而C++则意味着选项(1)。也就是说, 有想象中的清晰度--(A类)的一个小变化,意义就会急剧变化
 
A100:
你有想象中的清晰度--(A类)的一个小变化,意义就会发生巨大的变化

这是对类的改变,应该会产生相应的编译器信息

如果它不在那里,那就完全清楚了。

 
Ilyas:

作为一个临时解决方案,使用'!'运算符。(逻辑上不是)。
我们将考虑解决方案(当有很多代码时,我们可以现在改变行为吗?)
对于一个指针来说,bool转换操作有可能是对指针的操作,而不是对其指向的对象的操作。

如果不改变现有的代码,它就不会工作...作为动态对象的指针的整个概念崩溃了

我的意思是,而不是只写

class A {
public:
        bool operator*( A* a ) { return true; }
};
void OnStart()
{
        A *a, *b;
        if ( a * b );  //(1)
}

我们必须写一个混乱的。

        if ( *a * *b );//(2)

而这一切是为了什么?这样就可以检查一个指针是否为空值?- 有一个比较运算符用于此。

        if ( a != NULL );//(3)

为什么要重复呢?

 
A100:

作为动态对象的指针的整个概念就崩溃了

现在没有这个概念了,一个对象和一个指向它的指针被混在一起。