La notazione abbreviata dell'operatore postfix++ non compila quando il puntatore della classe base è esplicitamente castato in una classe derivata
class A {
};
class B : public A {
public:
voidoperator++( int ) {}
voidoperator++() {}
};
void f( A* a )
{
((B *)a).operator++( 0 ); //нормально
((B *)a).operator++(); //нормально
++((B *)a); //нормально
((B *)a)++; //ошибка
}
class A {
public:
int f() { return ( 1 ); }
};
class B {
public:
B( const A *aa ) : a( aa ) {}
int g() { return ( a.f() ); } //должно быть предупреждение, поскольку a.f() не constconst A *a;
};
Non è la prima volta, ma è l'unica volta che si ottengono queste foto quando si caricano, il che significa che bisogna impostare alcuni criteri (probabilmente hai una certa dimensione). ). Vengono visualizzati normalmente dappertutto. Per favore, ditemi cosa c'è che non va.
Un errore di compilazione non necessario si verifica se la macro utilizza una conversione del tipo di risultato e il valore di ritorno non viene poi utilizzato (a volte è necessario, a volte no)
int g( int x ) { return ( x ); }
#define F( X ) (long)g( X )
voidOnStart()
{
int f = F( 0 ); //нормально
F( 0 ); //ошибка компиляции
}
A100: Un errore di compilazione non necessario si verifica se una macro utilizza una conversione del tipo di risultato e il valore di ritorno non viene successivamente utilizzato (a volte è necessario, a volte no)
Questo non ha niente a che vedere con l'uso delle definizioni.
Anche una semplice definizione equivalente darà lo stesso errore
La notazione abbreviata dell'operatore postfix++ non compila quando il puntatore della classe base è esplicitamente castato in una classe derivata
Almeno il compilatore dovrebbe avvertire che a.f() non è const
Grazie per la segnalazione, entrambi gli errori sono stati corretti.
Ma nei modelli, vi darò degli esempi più tardi.
Anche qui - non è chiaro.
tutto funziona correttamente, ma se si aggiunge la funzione intermedia ex2(...)
Il risultato è diverso. Cosa ha fatto ex2(...) ? - ha appena passato i puntatori per riferimento su
Si prega di dare un'occhiata a
Anche qui - non è chiaro.
tutto funziona correttamente, ma se si aggiunge la funzione intermedia ex2(...)
Il risultato è diverso. Cosa ha fatto ex2(...) ? - ha appena passato i puntatori per riferimento su
Si prega di dare un'occhiata a
Non è la prima volta, ma è l'unica volta che si ottengono queste foto quando si caricano, il che significa che bisogna impostare alcuni criteri (probabilmente hai una certa dimensione).
). Vengono visualizzati normalmente dappertutto. Per favore, ditemi cosa c'è che non va.
Un errore di compilazione non necessario si verifica se una macro utilizza una conversione del tipo di risultato e il valore di ritorno non viene successivamente utilizzato (a volte è necessario, a volte no)
Questo non ha niente a che vedere con l'uso delle definizioni.
Anche una semplice definizione equivalente darà lo stesso errore
P.S. Ora ci sarà un vorning qui.
Dopo aver ricompilato l'indicatore, l'errore "array out of range" ha iniziato a verificarsi quando si lavora con gli array dinamici.
Non è successo prima. Cosa fare?