aviso do compilador (nível 2) C4356
Mensagem de erro
'membros': não é possível inicializar o membro de dados estático através da classe derivada
A inicialização de um membro de dados estático ill foi formada.O compilador aceita a inicialização.
Esta é uma alterar recentes no compilador do Visual C++ .NET 2003.See Resumo das alterações de quebras de time de compilar para obter mais informações.
Para obter um código que funciona da mesma em todas as versões do Visual C++, inicialize o membro por meio da classe base.
Use o aviso pragma para suprimir este aviso.
O exemplo a seguir gera C4356:
// C4356.cpp
// compile with: /W2 /EHsc
#include <iostream>
template <class T>
class C {
static int n;
};
class D : C<int> {};
int D::n = 0; // C4356
// try the following line instead
// int C<int>::n = 0;
class A {
public:
static int n;
};
class B : public A {};
int B::n = 10; // C4356
// try the following line instead
// int A::n = 99;
int main() {
using namespace std;
cout << B::n << endl;
}