Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'function' : construtor para classe com bases virtuais tem '...'; chamadas podem não ser compatíveis com versões mais antigas do Visual C++
Observações
Possível incompatibilidade.
Considere o exemplo de código a seguir. Se a definição do construtor S2::S2( int i, ... ) foi compilada usando uma versão do compilador Microsoft C++ antes da versão 7, mas o exemplo a seguir é compilado usando a versão atual, a chamada para o construtor para S3 não funcionaria corretamente devido a uma alteração de convenção de chamada de caso especial. Se ambos fossem compilados usando o Visual C++ 6.0, a chamada também não funcionaria direito, a menos que nenhum parâmetro fosse passado para as reticências.
Para corrigir este aviso,
Não use reticências em um construtor.
Certifique-se de que todos os componentes em seu projeto são criados com a versão atual (incluindo quaisquer bibliotecas que possam definir ou fazer referência a essa classe) e, em seguida, desative o aviso usando o pragma de aviso .
Example
O exemplo a seguir gera C4256:
// C4256.cpp
// compile with: /W4
// #pragma warning(disable : 4256)
struct S1
{
};
struct S2: virtual public S1
{
S2( int i, ... ) // C4256
{
i = 0;
}
/*
// try the following line instead
S2( int i)
{
i = 0;
}
*/
};
void func1()
{
S2 S3( 2, 1, 2 ); // C4256
// try the following line instead
// S2 S3( 2 );
}
int main()
{
}