Teilen über


Compilerfehler C3104

Unzulässiges Attributargument

Bemerkungen

Sie haben ein ungültiges Argument für ein Attribut angegeben.

Weitere Informationen finden Sie unter Attributparametertypen .

Dieser Fehler kann als Ergebnis der Compilerkonformität generiert werden, die für Visual Studio 2005 ausgeführt wurde: Wenn verwaltete Arrays an benutzerdefinierte Attribute übergeben werden, wird der Typ des Arrays nicht mehr aus der Aggregatinitialisierungsliste abgeleitet. Der Compiler erfordert jetzt, dass Sie den Typ des Arrays sowie die Initialisierungsliste angeben.

Beispiele

Im folgenden Beispiel wird C3104 generiert.

// 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{};

Im folgenden Beispiel wird C3104 generiert.

// 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 {};