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.
'class::identifier' : não é uma declaração de uso válida no escopo não-classe
Observações
Você usou uma declaração using incorretamente.
Esse erro pode ser gerado como resultado do trabalho de conformidade do compilador que foi feito para o Visual Studio 2005: não é mais válido ter uma using declaração para um tipo aninhado, você deve qualificar explicitamente cada referência feita ao tipo aninhado, colocar o tipo em um namespace ou criar um typedef.
Examples
O exemplo a seguir gera C2885.
// C2885.cpp
namespace MyNamespace {
class X1 {};
}
struct MyStruct {
struct X1 {
int i;
};
};
int main () {
using MyStruct::X1; // C2885
// OK
using MyNamespace::X1;
X1 myX1;
MyStruct::X1 X12;
typedef MyStruct::X1 abc;
abc X13;
X13.i = 9;
}
Se você usar a palavra-chave com um membro da using classe, o C++ exigirá que você defina esse membro dentro de outra classe (uma classe derivada).
O exemplo a seguir gera C2885.
// C2885_b.cpp
// compile with: /c
class A {
public:
int i;
};
void z() {
using A::i; // C2885 not in a class
}
class B : public A {
public:
using A::i;
};