Delen via


Compilerfout C3293

'accessor': gebruik 'standaard' om toegang te krijgen tot de standaardeigenschap (indexeerfunctie) voor klasse 'type'

Opmerkingen

Er is een geïndexeerde eigenschap onjuist toegeschreven. Zie Procedure: Eigenschappen gebruiken in C++/CLI voor meer informatie.

Visual Studio 2017 en hoger: In Visual Studio 2015 en eerder heeft de compiler in sommige gevallen een standaardeigenschap als standaardindexeerder verkeerd geïdentificeerd. Het was mogelijk om het probleem te omzeilen door de identificator 'default' te gebruiken om toegang te krijgen tot de eigenschap. De tijdelijke oplossing zelf werd problematisch nadat de standaardwaarde werd geïntroduceerd als trefwoord in C++11. Daarom zijn in Visual Studio 2017 de fouten waarvoor de tijdelijke oplossing is vereist, opgelost. De compiler genereert nu een fout wanneer 'standaard' wordt gebruikt voor toegang tot de standaardeigenschap voor een klasse.

Example

In het volgende voorbeeld wordt C3293 gegenereerd in Visual Studio 2015 en eerder.

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