Erro do compilador C3379
'class': uma classe aninhada não pode ter um especificador de acesso de assembly como parte da própria declaração
Quando aplicadas a um tipo gerenciado, como classe ou struct, as palavras-chave public e private indicam se a classe será exposta por meio de metadados de assembly. public
ou private
não pode ser aplicado a uma classe aninhada, que herdará o acesso de assembly da classe delimitadora.
As palavras-chave e , quando usadas com ref
/clrvalue
, indicam que uma classe é gerenciada (confira Classes e structs).
O seguinte exemplo gera o erro C3379:
// C3379a.cpp
// compile with: /clr
using namespace System;
public ref class A {
public:
static int i = 9;
public ref class BA { // C3379
// try the following line instead
// ref class BA {
public:
static int ii = 8;
};
};
int main() {
A^ myA = gcnew A;
Console::WriteLine(myA->i);
A::BA^ myBA = gcnew A::BA;
Console::WriteLine(myBA->ii);
}