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.
Mensagem de erro
argumento de atributo ilegal
Você especificou um argumento inválido para um atributo.
Consulte Tipos de parâmetro de atributo para obter mais informações.
Esse erro pode ser gerado sistema autônomo resultado do compilador conformidade trabalho foi realizado em Visual C++ 2005: ao passar arrays gerenciado para atributos personalizados, o tipo de matriz não é deduzido da lista de inicialização agregada.O compilador agora requer que você especifique o tipo de matriz, bem sistema autônomo a lista de inicializador.Consulte Quebrar alterações no compilador de 2005 Visual C++ para obter mais informações.
Exemplo
O exemplo a seguir gera C3104.
// C3104a.cpp
// compile with: /clr /c
using namespace System;
[AttributeUsage(AttributeTargets::Class)]
public ref struct ABC : public Attribute {
ABC(array<int>^){}
array<double> ^ param;
};
[ABC( {1,2,3}, param = {2.71, 3.14})] // C3104
// try the following line instead
// [ABC( gcnew array<int> {1,2,3}, param = gcnew array<double>{2.71, 3.14})]
ref struct AStruct{};
O exemplo a seguir gera C3104.
// C3104b.cpp
// compile with: /clr /c
// C3104 expected
using namespace System;
int func() {
return 0;
}
[attribute(All)]
ref class A {
public:
A(int) {}
};
// Delete the following 2 lines to resolve.
[A(func())]
ref class B {};
// OK
[A(0)]
ref class B {};
O exemplo a seguir gera C3104.
// C3104c.cpp
// compile with: /clr:oldSyntax /c
using namespace System;
[ attribute(Class) ]
public __gc class AnotherAttr {
public:
AnotherAttr(Object* arr __gc[]) : var0(arr) {}
Object* var1 __gc[];
Object* var0 __gc[];
};
[ AnotherAttr( { __box(3.14159), S"pi" }, var1 = { S"a", S"b" } ) ] // C3104
public __gc class Class1 {};
// OK
[ AnotherAttr( new Object * __gc[] {__box(3.14159), S"pi" }, var1 = new Object * __gc[] { S"a", S"b" } ) ]
public __gc class Class2 {};