Index: /trunk/abdev/BasicCompiler64/NumOpe.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/NumOpe.cpp	(revision 398)
+++ /trunk/abdev/BasicCompiler64/NumOpe.cpp	(revision 399)
@@ -146,5 +146,12 @@
 	if(ArrayElements[0]){
 		Type classType;
-		GetMemberType( leftType, VarName, classType, 0, false );
+		if( VarName[0] == '\0' )
+		{
+			classType = leftType;
+		}
+		else
+		{
+			GetMemberType( leftType, VarName, classType, 0, false );
+		}
 		if( classType.IsObject() )
 		{
@@ -152,19 +159,26 @@
 			compiler.codeGenerator.op_mov_RR( REG_R11, useReg );
 
-			RELATIVE_VAR relativeVar;
-			relativeVar.dwKind=VAR_DIRECTMEM;
-
-			if( !_member_offset(
-				true,	//エラー表示あり
-				false,	//読み込み専用
-				leftType,
-				VarName,&relativeVar,classType,0))
+			if( VarName[0] )
 			{
-				return false;
-			}
-
-			// オブジェクトメンバのポインタをraxにコピー
-			if( !VarToReg( relativeVar, baseType, resultType ) ){
-				SetError(11,termFull,cp);
+				RELATIVE_VAR relativeVar;
+				relativeVar.dwKind=VAR_DIRECTMEM;
+
+				if( !_member_offset(
+					true,	//エラー表示あり
+					false,	//読み込み専用
+					leftType,
+					VarName,&relativeVar,classType,0))
+				{
+					return false;
+				}
+
+				// オブジェクトメンバのポインタをraxにコピー
+				if( !VarToReg( relativeVar, baseType, resultType ) ){
+					SetError(11,termFull,cp);
+				}
+			}
+			else
+			{
+				// オブジェクトメンバのポインタは既にraxに入っている
 			}
 
@@ -238,5 +252,17 @@
 		const UserProc *pUserProc = OverloadSolutionWithStrParam(termFull,userProcs,parameter,termLeft);
 
-		if( pUserProc ){
+		if( pUserProc )
+		{
+			// TODO: この判定処理は暫定（特に[]サーチを行うところが）
+			if( pUserProc->Params().size() == 0 && parameter[0] && strstr( termFull, "[" ) )
+			{
+				TermMemberOpe( leftType, baseType, resultType, termFull, termLeft, methodName );
+
+				char temporary[VN_SIZE], temp2[VN_SIZE];
+				sprintf( temporary, "[%s]", parameter );
+				sprintf( temp2, "%s.%s", termLeft, methodName );
+				Type classType = resultType;
+				return TermMemberOpe( classType, baseType, resultType, termFull, temp2, temporary );
+			}
 
 			resultType = pUserProc->ReturnType();
