Erros, bugs, perguntas - página 2359
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Verifiquei-o especialmente para si, tendo em conta
Está tudo bem DJ.
Que compilador utiliza?
Estou no VS 2010:
binário '=' : não foi encontrado nenhum operador que aceite um operando à direita do tipo 'A' (ou não há conversão aceitável)
p.s. Não percebo bem o que significa "com consideração"? Tratava-se da aceitabilidade de copiar implicitamente uma classe base para uma classe derivada.
No Visual Studio, o meu exemplo também funciona. Referia-me ao operador da cópia explícita e expliquei-o através do código.
Escrevi-o só por precaução, para que, se desactivar o explícito, não o desactive acidentalmente ao mesmo tempo
No Visual Studio, o meu exemplo também funciona. Referia-me ao operador da cópia explícita e expliquei-o através do código.
Não estava a referir-me ao operador explícito. Estava a falar da inadmissibilidade do operador implícito neste caso a que chamou "estreiteza de visão" e não é assim.
Se precisar de fazer uma cópia, deve primeiro fazer o molde b explicitamente para o tipo correcto em C++. Para uma tal cópia é uma violação do encapsulamento de objectos. É por isso que não deve ser uma questão de implicação.
Referia-me a um operador de cópia explícita e expliquei-o em código.
Duvido que o compilador os separe (no contexto do código) em explícito e implícito. Caso contrário, seria fácil de reparar
A propósito, o tipo de operador parece estar OK
Primeiro procura o operador B:::, se estiver ausente, então procura o operador A:::, se também estiver ausente, então considera o seu dever cumprido e não faz nada (embora o ponteiro esteja quebrado como resultado) :)
se também não estiver lá, então considera o seu dever cumprido e não faz nada (embora o ponteiro acabe por ser quebrado) :)
Porque é que não faz nada? Copia por operador implícito (automático)=(const A&), o que não deve fazer.
E finalmente remover esse asterisco depois de B, magoa os seus olhos ) Já descobrimos tudo com este insecto.
E, finalmente, tirar esse asterisco depois de B, magoa o olho ) Já descobriu tudo com este insecto.
Eu pessoalmente encontro variáveis de objectos sem asteriscos perturbadores )) Um dos insectos desagradáveis é escrever A a=novo A em vez de *a e não compreender o que está errado durante muito tempo) Eu, pelo contrário, mostrei que tudo funciona correctamente se seguir os seus conselhos e declarar uma op.=&. O editor irá produzir um erro neste caso de imediato. Fá-lo-ei dessa forma a partir de agora ))
As peculiaridades são duplamente conhecidas, mas não de tal forma que se alterar a ordem de adição (excepto pelos números relativamente muito diferentes), o resultado é diferente! Por favor explique a um idiota porque é que isto acontece aqui?
Basta olhar para as duas linhas inferiores da fonte.
Erro para programadores.
O guião não compila, identifica o porquê))))). Utilizar ficheiro anexo.
O mesmo ficheiro: