Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
'identifier' : nenhum construtor padrão apropriado disponível
Observações
Um construtor padrão, um construtor que não requer argumentos, não está disponível para a classe, estrutura ou união especificada. O compilador fornece um construtor padrão somente se nenhum construtor definido pelo usuário for fornecido.
Se você fornecer um construtor que usa um parâmetro non-void e deseja permitir que sua classe seja criada sem parâmetros (por exemplo, como os elementos de uma matriz), você também deve fornecer um construtor padrão. O construtor padrão pode ser um construtor com valores padrão para todos os parâmetros.
Example
Uma causa comum de erro C2512 é quando você define uma classe ou construtor struct que usa argumentos e, em seguida, você tenta declarar uma instância de sua classe ou struct sem quaisquer argumentos. Por exemplo, struct B abaixo declara um construtor que requer um char * argumento, mas não um que não aceita argumentos. Em main, uma instância de B é declarada, mas nenhum argumento é fornecido. O compilador gera C2512 porque não consegue encontrar um construtor padrão para B.
// C2512.cpp
// Compile with: cl /W4 c2512.cpp
// C2512 expected
struct B {
B (char *) {}
// Uncomment the following line to fix.
// B() {}
};
int main() {
B b; // C2512 - This requires a default constructor
}
Você pode corrigir esse problema definindo um construtor padrão para seu struct ou classe, como B() {}, ou um construtor onde todos os argumentos têm valores padrão, como B (char * = nullptr) {}.