Oops, estou a abrandar, o segundo exemplo não está de todo certo.
É por isso que é lógico que
erro: inicialização inválida de referência não constante do tipo 'int*&' a partir de um valor do tipo 'int*'.
Sim, eu já escrevi sobre isso acima. Modifiquei a segunda amostra, mas ainda não funciona. O operador devolve um valor, ou seja, uma cópia. Todos nós os três devemos ter ficado tão obtusos, eh! ))
Комбинатор: Então porque é que a primeira peça do exemplo do fxsaber funciona?
Porque não deveria? Ele tem uma expressão isto[0] que devolve um ponteiro. Aqui é a mesma coisa de uma forma diferente:
int a;
int* Func(int& i)
{
return(&i);
}
int* p = Func(a); // работает, то же что A* a = this[0]
Func(a) = newint; // не работает, то же, что и this[0] = new int
O problema é que o ponteiro (descritor) do valor de alguma forma se transforma em lvalue depois de ser atribuído a uma variável. É um pouco de loucura...
Комбинатор: O problema é que o ponteiro (descritor) do valor de alguma forma se transforma em lvalue depois de ser atribuído a uma variável. Isso é um pouco de loucura...
Sim, sou eu quem está confuso. Depois de
A* a = this[0];
a = new A; // так работает
A expressão
CheckPointer(this[0]) == POINTER_INVALID
será verdade. O que faz todo o sentido.
Os criadores devem formular a razão pela qual é impossível de forma clara e agradável
Ainda não compreendo o último exemplo. Sobrecarga "=" operador na classe A transforma isto[0] de valor em lvalue... Não consigo perceber como. Isto é algum tipo de característica do MCL, não existe tal comportamento nos profissionais.fxsaber, como chegou sequer a esta construção? Quero dizer sobrecarga = em A. Ou por tentativa e erro?
Oops, estou a abrandar, o segundo exemplo não está de todo certo.
É por isso que é lógico que
erro: inicialização inválida de referência não constante do tipo 'int*&' a partir de um valor do tipo 'int*'.
Nós os três tínhamos de ser tão burros, eh! ))
Então porque é que a primeira peça do exemplo do fxsaber funciona?
Porque não deveria? Ele tem uma expressão isto[0] que devolve um ponteiro. Aqui é a mesma coisa de uma forma diferente:
este[0] é o valor aqui.
Resultado O problema é um disparate. Infelizmente, o vocabulário é escasso para o explicar.
fxsaber:
Точно не так
Результат
O problema é uma certa inutilidade
Infelizmente, o vocabulário é escasso para explicação.OK, não me apetece pensar. Já cansado.
O problema é que o ponteiro (descritor) do valor de alguma forma se transforma em lvalue depois de ser atribuído a uma variável. Isso é um pouco de loucura...
A expressão
será verdade. O que faz todo o sentido.
Os criadores devem formular a razão pela qual é impossível de forma clara e agradável
Sim, eu fiz asneira.
Em suma, é tudo bom :)