Compiler Error C2107
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Error C2107.
illegal index, indirection not allowed
A subscript is applied to an expression that does not evaluate to a pointer.
C2107 can occur if you incorrectly use the this pointer of a value type to access the type's default indexer. For more information, see Semantics of the this pointer.
The following sample generates C2107.
// C2107.cpp
// compile with: /clr
using namespace System;
value struct B {
property String ^ default[String ^] {
String ^ get(String ^ data) {
return "abc";
}
}
void Test() {
Console::WriteLine("{0}", this["aa"]); // C2107
Console::WriteLine("{0}", this->default["aa"]); // OK
}
};
int main() {
B ^ myb = gcnew B();
myb->Test();
}
Show: