Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"accessor": använd "default" för att komma åt standardegenskapen (indexeraren) för klassens "typ"
Anmärkningar
En indexerad egenskap användes felaktigt. Mer information finns i Använda egenskaper i C++/CLI .
Visual Studio 2017 och senare: I Visual Studio 2015 och tidigare felidentifierade kompilatorn i vissa fall en standardegenskap som standardindexerare. Det gick att kringgå problemet med hjälp av identifieraren "default" för att komma åt egenskapen. Själva lösningen blev problematisk efter att standardinställningen introducerades som ett nyckelord i C++11. I Visual Studio 2017 har därför buggarna som krävde lösningen åtgärdats, och kompilatorn genererar nu ett fel när "standard" används för att komma åt standardegenskapen för en klass.
Example
I följande exempel genereras C3293 i Visual Studio 2015 och tidigare.
// C3293.cpp
// compile with: /clr /c
using namespace System;
ref class IndexerClass {
public:
// default indexer
property int default[int] {
int get(int index) { return 0; }
void set(int index, int value) {}
}
};
int main() {
IndexerClass ^ ic = gcnew IndexerClass;
ic->Item[0] = 21; // C3293 in VS2015 OK in VS2017
ic->default[0] = 21; // OK in VS2015 and earlier
String ^s = "Hello";
wchar_t wc = s->Chars[0]; // C3293 in VS2015 OK in VS2017
wchar_t wc2 = s->default[0]; // OK in VS2015 and earlier
Console::WriteLine(wc2);
}