Megosztás a következőn keresztül:


C3293 fordítóhiba

"tartozék": a típus osztály alapértelmezett tulajdonságának (indexelőjének) eléréséhez használja az "alapértelmezett" tulajdonságot

Megjegyzések

Az indexelt tulajdonság helytelenül lett elérve. További információt a Tulajdonságok használata a C++/CLI-ben című témakörben talál.

Visual Studio 2017 és újabb verziók: A Visual Studio 2015-ben és korábbi verzióiban a fordító bizonyos esetekben helytelenül állított be alapértelmezett tulajdonságot alapértelmezett indexelőként. A probléma megkerüléséhez az "alapértelmezett" azonosítót használva lehetett hozzáférni a tulajdonsághoz. Maga a kerülő megoldás problémássá vált, miután a "default" kulcsszóként be lett vezetve a C++11-ben. Ezért a Visual Studio 2017-ben kijavították azokat a hibákat, amelyek megkerülő megoldást igényeltek, és a fordító most hibát dob, amikor az "alapértelmezett" kifejezést használják egy osztály alapértelmezett tulajdonságának eléréséhez.

Example

Az alábbi példa c3293-at hoz létre a Visual Studio 2015-ben és korábbi verzióiban.

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