Errori, bug, domande - pagina 2325

 
Ilyas:
C'erano buone ragioni per abbandonare l'operatore ->?
 
TheXpert:
C'erano buone ragioni per abbandonare l'operatore ->?

No, non c'erano motivi seri.

L'unica giustificazione per la sua assenza è la preoccupazione per le menti immature degli utenti che non hanno familiarità con C++.

 
fxsaber:

La doppia negazione è ottimizzata dal compilatore?

Sì, è così.

 
Ilyas:

No, non c'erano motivi seri.

L'unica giustificazione per la sua assenza è la cura delle fragili menti degli utenti che non hanno familiarità con C++.

Non credo che succederà nulla di male se lo aggiungi.

Si può permettere l'uso di un punto con dei puntatori dove non c'è ambiguità per un po' di tempo.

E naturalmente emettere un avvertimento.


 
Come posso aggiungere un pulsante ai prodotti nel marketplace: "Download Trial"?
 
Koldun Zloy:

Non credo che succederà nulla di male se lo aggiungi.

Perun po', si può essere autorizzati a usare un punto con i puntatori dove non c'è ambiguità.

E naturalmente emettere un avvertimento.

Perché renderlo così complicato? È sufficiente per rendere . e -> dischi equivalenti e intercambiabili.

In senso figurato

#define ->   .
 
fxsaber:

Sì, c'è ambiguità nel suo caso. In senso buono, ci dovrebbe essere almeno un avvertimento del compilatore per questo tipo di cose.

Nel mio caso, che è molto più semplice, tutto è chiaro. Credo che anche C++ sia d'accordo con questo.

Quello che voglio dire è che nel mio caso MQL implica l'opzione (2), mentre C++ implica l'opzione (1). Cioè avete chiarezza immaginaria - un piccolo cambiamento (di classe A) e il significato cambia drammaticamente
 
A100:
Hai una chiarezza immaginaria - un piccolo cambiamento (di classe A) e il significato cambia drammaticamente

Questa è una modifica alla classe e dovrebbe risultare in un messaggio del compilatore corrispondente.

Se non c'è, è una chiarezza totale.

 
Ilyas:

Come soluzione temporanea, usate l'operatore '! (logico no).
Penseremo alla soluzione (possiamo cambiare il comportamento ora, quando c'è molto codice?)
È possibile che per un puntatore, un'operazione di conversione bool sia un'operazione sul puntatore e non sull'oggetto a cui punta.

Senza cambiare i codici esistenti, non funzionerà... L'intero concetto di puntatori come oggetti dinamici crolla

Voglio dire, invece di scrivere solo

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

dovremo scriverne una confusa.

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

E tutto questo per cosa? In modo che un puntatore possa essere controllato per NULL? - C'è un operatore di confronto per questo:

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

Perché duplicarlo?

 
A100:

l'intero concetto di puntatori come oggetti dinamici crolla

non c'è alcun concetto ora, un oggetto e un puntatore ad esso sono mischiati in una pila