Bug? Angeblich Initonly (VC++ 2008/CLR)

20/10/2008 - 18:11 von Armin Zingler | Report spam
Hallo miteinander,

könnte mir bitte jemand sagen, warum in der letzten Zeile ein
Compilierfehler (C3893) kommt? Meldung:

"'Frame::Items': Die Verwendung des L-Wertes eines initonly-Datenmembers ist
nur in einem Instanzenkonstruktor der Frame-Klasse zulàssig."

using namespace System;
using namespace System::Collections::Generic;

public ref class TVB abstract
{
public:
IO::Stream^ s;
};

public ref class Frame
{
public:
initonly List<TVB^>^ Items;

Frame(): Items(gcnew List<TVB^>){};
};

int main()
{
Frame^ f = gcnew Frame();

f->Items[0]->s = gcnew IO::MemoryStream(); //<<<<<<<< C3893
};


Ich weise ja nichts zu f->Items zu, sondern zu einem Feld eines Items
innerhalb der Liste. Da das alles Referenztypen sind (keine Wertetypen) sehe
ich keinen Grund für diese Fehlermeldung. Wenn ich den Umweg über eine
temporàre Variable gehe, funktioniert es:

TVB^ tmp = f->Items[0];
tmp->s = gcnew System::IO::MemoryStream();


Armin
 

Lesen sie die antworten

#1 Jochen Kalmbach [MVP]
21/10/2008 - 13:59 | Warnen spam
Hallo Armin!

könnte mir bitte jemand sagen, warum in der letzten Zeile ein
Compilierfehler (C3893) kommt? Meldung:




Ich vermute, dass es wieder ein Compiler-Bug ist...
hab es mal wieder der Produkt-Gruppe gesagt...

Greetings
Jochen

Ähnliche fragen