Partilhar via


Erro do compilador C2558

'identificador' : nenhum construtor de cópia disponível ou o construtor de cópia é declarado como 'implícito'

Observações

Um construtor de cópia inicializa um objeto a partir de outro objeto do mesmo tipo. (Ele faz uma cópia do objeto.) O compilador gera um construtor de cópia padrão se você não definir nenhum construtor.

Para corrigir este erro

  1. O problema pode ocorrer quando é feita uma tentativa de copiar uma classe cujo construtor copy é private. Na maioria dos casos, uma classe que tem um private construtor de cópia não deve ser copiada. Uma técnica de programação comum declara um private construtor de cópia para impedir o uso direto de uma classe. A classe pode ser inútil por si só ou exigir outra classe para funcionar corretamente.

    Se determinar que é seguro usar uma classe com um private copy constructor, deve derivar uma nova classe a partir da classe que tem o private constructor e disponibilizar um public ou protected copy constructor na nova classe. Use a classe derivada no lugar do original.

  2. O problema pode ocorrer quando é feita uma tentativa de copiar uma classe cujo construtor copy é explícito. Declarar um construtor de cópia como explicit impede a passagem/retorno de objetos de uma classe para/desde funções. Para obter mais informações sobre construtores explícitos, consulte User-Defined Type Conversions.

  3. O problema pode ocorrer quando é feita uma tentativa de copiar uma instância de classe declarada const usando um construtor de cópia que não usa um const parâmetro de referência. Declare o construtor de cópia com uma referência a tipo const em vez de uma referência a tipo não-constante.