Aviso do compilador (nível 4) C4256
'function': o construtor para a classe com bases virtuais tem '...'; as chamadas podem não ser compatíveis com versões mais antigas do Visual C++
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 do Microsoft C++ antes da versão 7, mas o exemplo a seguir é compilado usando a versão atual, a chamada ao 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 corretamente, a menos que nenhum parâmetro fosse passado para as reticências.
Para corrigir esse aviso,
Não use reticências em um construtor.
Verifique se todos os componentes em seu projeto foram criados com a versão atual (incluindo todas as bibliotecas que podem definir ou referenciar essa classe) e desabilite o aviso usando o pragma warning.
O seguinte exemplo gera o erro 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()
{
}