Condividi tramite


Errore del compilatore C3104

argomento attributo non valido

È stato specificato un argomento non valido per un attributo.

Per altre informazioni, vedere Tipi di parametri di attributo.

Questo errore può essere generato in seguito al lavoro di conformità del compilatore eseguito per Visual Studio 2005: quando si passano matrici gestite a attributi personalizzati, il tipo della matrice non viene più dedotto dall'elenco di inizializzazione aggregata. Il compilatore richiede ora di specificare il tipo della matrice e l'elenco di inizializzatori.

Esempi

L'esempio seguente genera l'errore 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{};

L'esempio seguente genera l'errore 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 {};