Index: trunk/ab5.0/abdev/BasicCompiler_Common/DebugMiddleFile.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/DebugMiddleFile.cpp	(revision 535)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/DebugMiddleFile.cpp	(revision 536)
@@ -162,5 +162,5 @@
 	int i2,i3;
 
-	compiler.pCompilingClass = NULL;
+	compiler.ClearCompilingUserProcAndClass();
 
 	i2=0;
Index: trunk/ab5.0/abdev/BasicCompiler_Common/NumOpe_GetType.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/NumOpe_GetType.cpp	(revision 535)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/NumOpe_GetType.cpp	(revision 536)
@@ -480,6 +480,7 @@
 
 
-	if(lstrcmpi(termFull,"This")==0){
-		if( compiler.pCompilingClass == NULL )
+	if(lstrcmpi(termFull,"This")==0)
+	{
+		if( !compiler.IsCompilingClass() )
 		{
 			return false;
@@ -487,5 +488,5 @@
 
 		//Thisオブジェクト
-		resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
+		resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() );
 		isLiteral = false;
 		return true;
Index: trunk/ab5.0/abdev/BasicCompiler_Common/VarList.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/VarList.cpp	(revision 535)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/VarList.cpp	(revision 536)
@@ -778,5 +778,5 @@
 
 		if(pUserProc){
-			compiler.pCompilingClass = pUserProc->GetParentClassPtr();
+			compiler.StartProcedureCompile( pUserProc );
 			UserProc::CompileStartForUserProc( pUserProc );
 		}
Index: trunk/ab5.0/abdev/BasicCompiler_Common/VariableOpe.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/VariableOpe.cpp	(revision 535)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/VariableOpe.cpp	(revision 536)
@@ -457,5 +457,5 @@
 
 	//アクセシビリティをチェック
-	if( &objClass == compiler.pCompilingClass ){
+	if( compiler.IsCompilingClass() && &objClass == &compiler.GetCompilingClass() ){
 		//同一クラスオブジェクトの場合はプライベートアクセスを容認する
 		if( pMember->IsNoneAccess() ){
@@ -571,5 +571,5 @@
 	}
 
-	if(compiler.pCompilingClass){
+	if( compiler.IsCompilingClass() ){
 		///////////////////////
 		// クラスメンバの参照
@@ -578,5 +578,5 @@
 		if(lstrcmpi(variable,"This")==0){
 			//Thisオブジェクト
-			resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
+			resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() );
 			return true;
 		}
@@ -590,5 +590,5 @@
 			//クラス内の動的メンバを参照するとき（通常）
 
-			if( !compiler.pCompilingClass->HasDynamicMember( VarName ) )
+			if( !compiler.GetCompilingClass().HasDynamicMember( VarName ) )
 			{
 				goto NonClassMember;
@@ -597,5 +597,5 @@
 
 		return GetMemberType(
-			Type( DEF_OBJECT, *compiler.pCompilingClass ),
+			Type( DEF_OBJECT, compiler.GetCompilingClass() ),
 			variable,
 			resultType,
@@ -653,8 +653,8 @@
 	}
 
-	if(compiler.pCompilingClass){
+	if( compiler.IsCompilingClass() ){
 		//自身のクラスから静的メンバを参照する場合
 		char temp2[VN_SIZE];
-		sprintf(temp2,"%s.%s",compiler.pCompilingClass->GetName().c_str(),VarName);
+		sprintf(temp2,"%s.%s",compiler.GetCompilingClass().GetName().c_str(),VarName);
 
 		pVar = compiler.GetObjectModule().meta.GetGlobalVars().Find( LexicalAnalyzer::FullNameToSymbol( temp2 ) );
@@ -916,6 +916,6 @@
 
 	//クラス名
-	if(compiler.pCompilingClass){
-		lstrcat(FullName,compiler.pCompilingClass->GetName().c_str());
+	if( compiler.IsCompilingClass() ){
+		lstrcat(FullName,compiler.GetCompilingClass().GetName().c_str());
 		lstrcat(FullName,"%");
 	}
Index: trunk/ab5.0/abdev/BasicCompiler_Common/WatchList.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/WatchList.cpp	(revision 535)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/WatchList.cpp	(revision 536)
@@ -379,5 +379,6 @@
 	}
 
-	if(compiler.pCompilingClass){
+	if( compiler.IsCompilingClass() )
+	{
 		///////////////////////
 		// クラスメンバの参照
@@ -392,5 +393,5 @@
 			//クラス内の動的メンバを参照するとき（通常）
 
-			if( !compiler.pCompilingClass->HasDynamicMember( VarName ) )
+			if( !compiler.GetCompilingClass().HasDynamicMember( VarName ) )
 			{
 				goto NonClassMember;
@@ -418,5 +419,5 @@
 		pRelativeVar->dwKind=VAR_DIRECTMEM;
 
-		i3=Debugging_GetMember(*compiler.pCompilingClass,variable,pRelativeVar,resultType,1);
+		i3=Debugging_GetMember( compiler.GetCompilingClass(),variable,pRelativeVar,resultType,1);
 		if(i3==0){
 			//式エラー
Index: trunk/ab5.0/abdev/BasicCompiler_Common/hash.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/hash.cpp	(revision 535)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/hash.cpp	(revision 536)
@@ -66,5 +66,5 @@
 		{
 			//クラスメンバ関数内から基底クラスの呼び出し
-			pobj_c=&compiler.pCompilingClass->GetSuperClass();
+			pobj_c=&compiler.GetCompilingClass().GetSuperClass();
 		}
 		else
@@ -104,12 +104,12 @@
 
 
-	if(compiler.pCompilingClass){
+	if( compiler.IsCompilingClass() ){
 		//自身のオブジェクトのメンバ関数を検索
 
 		// 静的メソッド
-		compiler.pCompilingClass->GetStaticMethods().Enum( name, subs );
+		compiler.GetCompilingClass().GetStaticMethods().Enum( name, subs );
 
 		// 動的メソッド
-		compiler.pCompilingClass->EnumDynamicMethodsOrInterfaceMethods( name, subs );
+		compiler.GetCompilingClass().EnumDynamicMethodsOrInterfaceMethods( name, subs );
 	}
 
Index: trunk/ab5.0/abdev/BasicCompiler_Common/include/Compiler.h
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/include/Compiler.h	(revision 535)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/include/Compiler.h	(revision 536)
@@ -30,4 +30,8 @@
 	// 名前空間サポート
 	NamespaceSupporter namespaceSupporter;
+
+	// コンパイル中のUserProc/CClass
+	const UserProc *pCompilingUserProc;
+	const CClass *pCompilingClass;
 
 	// オブジェクトモジュール
@@ -187,9 +191,13 @@
 	const std::string TypeToString( const Type &type );
 
-	// コンパイル中のクラス
-	const CClass *pCompilingClass;
-
+	void ClearCompilingUserProcAndClass();
+	void SetCompilingClass( const CClass *pClass );
 	void StartProcedureCompile( const UserProc *pUserProc );
 	void FinishProcedureCompile();
+
+	bool IsGlobalAreaCompiling();
+	const UserProc &GetCompilingUserProc();
+	bool IsCompilingClass();
+	const CClass &GetCompilingClass();
 };
 
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp	(revision 535)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp	(revision 536)
@@ -942,5 +942,5 @@
 
 		// コンパイル中クラスとしてセット
-		compiler.pCompilingClass = &objClass;
+		compiler.SetCompilingClass( &objClass );
 
 		const EnumInfo *pEnumInfo = NULL;
@@ -971,5 +971,5 @@
 		}
 
-		compiler.pCompilingClass = NULL;
+		compiler.SetCompilingClass( NULL );
 	}
 
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 535)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 536)
@@ -145,13 +145,13 @@
 
 	// 型パラメータ
-	if( this->pCompilingClass )
+	if( this->IsCompilingClass() )
 	{
 		// クラスに属するメソッドをコンパイルしているとき
-		int formalTypeIndex = this->pCompilingClass->GetFormalGenericTypeParameterIndex( typeName );
+		int formalTypeIndex = this->GetCompilingClass().GetFormalGenericTypeParameterIndex( typeName );
 		if( formalTypeIndex != -1 )
 		{
 			// コンパイル中クラスにおけるジェネリクス用の型パラメータのとき
 			type.SetBasicType( DEF_TYPE_PARAMETER );
-			type.SetClassPtr( &this->pCompilingClass->GetFormalGenericTypes()[formalTypeIndex].GetType().GetClass() );
+			type.SetClassPtr( &this->GetCompilingClass().GetFormalGenericTypes()[formalTypeIndex].GetType().GetClass() );
 			type.SetFormalTypeName( typeName );
 			type.SetFormalTypeIndex( formalTypeIndex );
@@ -211,8 +211,22 @@
 }
 
+void Compiler::ClearCompilingUserProcAndClass()
+{
+	this->pCompilingUserProc = NULL;
+	this->pCompilingClass = NULL;
+}
+
+void Compiler::SetCompilingClass( const CClass *pClass )
+{
+	this->pCompilingClass = pClass;
+}
+
 void Compiler::StartProcedureCompile( const UserProc *pUserProc )
 {
+	//コンパイル中の関数
+	this->pCompilingUserProc = pUserProc;
+
 	//コンパイル中の関数が属するクラス
-	this->pCompilingClass = pUserProc->GetParentClassPtr();
+	this->SetCompilingClass( pUserProc->GetParentClassPtr() );
 
 	//コンパイルスタートをクラス管理クラスに追加
@@ -233,3 +247,33 @@
 void Compiler::FinishProcedureCompile()
 {
-}
+	this->pCompilingUserProc = NULL;
+	this->pCompilingClass = NULL;
+}
+
+bool Compiler::IsGlobalAreaCompiling()
+{
+	return ( pCompilingUserProc == NULL );
+}
+const UserProc &Compiler::GetCompilingUserProc()
+{
+	if( !this->IsGlobalAreaCompiling() )
+	{
+		return *pCompilingUserProc;
+	}
+
+	throw;
+}
+
+bool Compiler::IsCompilingClass()
+{
+	return ( pCompilingClass != NULL );
+}
+const CClass &Compiler::GetCompilingClass()
+{
+	if( this->IsCompilingClass() )
+	{
+		return *pCompilingClass;
+	}
+
+	throw;
+}
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp	(revision 535)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp	(revision 536)
@@ -391,5 +391,7 @@
 
 	// 呼び出し元でコンパイル中のクラスポインタをバックアップ
-	const CClass *pBackCompilingClass = compiler.pCompilingClass;
+	const CClass *pBackCompilingClass = compiler.IsCompilingClass()
+		? &compiler.GetCompilingClass()
+		: NULL;
 
 	for(i=0;;i++){
@@ -464,5 +466,5 @@
 			if(!pobj_c) continue;
 
-			compiler.pCompilingClass = pobj_c;
+			compiler.SetCompilingClass( pobj_c );
 
 			if(lpszInheritsClass){
@@ -688,5 +690,5 @@
 			if(!pobj_c) continue;
 
-			compiler.pCompilingClass = pobj_c;
+			compiler.SetCompilingClass( pobj_c );
 
 			if(lpszInheritsClass){
@@ -981,5 +983,5 @@
 
 	// 呼び出し元でコンパイル中のクラスポインタを元に戻す
-	compiler.pCompilingClass = pBackCompilingClass;
+	compiler.SetCompilingClass( pBackCompilingClass );
 
 	// 名前空間を元に戻す
Index: trunk/ab5.0/abdev/compiler_x86/Compile_CallProc.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/Compile_CallProc.cpp	(revision 535)
+++ trunk/ab5.0/abdev/compiler_x86/Compile_CallProc.cpp	(revision 536)
@@ -113,5 +113,5 @@
 			{
 				//クラスメンバ関数内から基底クラスの呼び出し
-				pobj_c=&compiler.pCompilingClass->GetSuperClass();
+				pobj_c=&compiler.GetCompilingClass().GetSuperClass();
 
 				isFixedClass = true;
@@ -147,9 +147,9 @@
 
 				//New演算子によるコンストラクタ呼び出し
-				pobj_c=pUserProc->GetParentClassPtr();
+				pobj_c = pUserProc->GetParentClassPtr();
 			}
 			else{
 				//クラスメンバ関数内から同一クラスのメンバ関数の呼び出し
-				pobj_c=compiler.pCompilingClass;
+				pobj_c = &compiler.GetCompilingClass();
 			}
 		}
@@ -180,18 +180,23 @@
 		if(ObjectName[0]){
 			//外部からの呼び出し
-			if(pobj_c==compiler.pCompilingClass){
+			if( compiler.IsCompilingClass() && pobj_c == &compiler.GetCompilingClass() )
+			{
 				//同一クラスオブジェクトの場合はプライベートアクセスを容認する
-				if( pMethod->IsNoneAccess() ){
+				if( pMethod->IsNoneAccess() )
+				{
 					compiler.errorMessenger.Output(109,pUserProc->GetName(),cp);
 					return false;
 				}
 			}
-			else{
+			else
+			{
 				if( pMethod->IsPrivate()
-					|| pMethod->IsNoneAccess() ){
+					|| pMethod->IsNoneAccess() )
+				{
 					compiler.errorMessenger.Output(109,pUserProc->GetName(),cp);
 					return false;
 				}
-				if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() ){
+				if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() )
+				{
 					compiler.errorMessenger.Output(110,pUserProc->GetName(),cp);
 					return false;
Index: trunk/ab5.0/abdev/compiler_x86/Compile_Func.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/Compile_Func.cpp	(revision 535)
+++ trunk/ab5.0/abdev/compiler_x86/Compile_Func.cpp	(revision 536)
@@ -273,5 +273,5 @@
 			SetThisPtrToReg(REG_RCX);
 
-			pobj_c=compiler.pCompilingClass;
+			pobj_c = &compiler.GetCompilingClass();
 		}
 
@@ -611,5 +611,5 @@
 		}
 
-		Opcode_CallDelegate( compiler.pCompilingClass->GetDelegate(), methodPtrParamStr, objPtrValueStr, paramsStr + i );
+		Opcode_CallDelegate( compiler.GetCompilingClass().GetDelegate(), methodPtrParamStr, objPtrValueStr, paramsStr + i );
 	}
 
Index: trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp	(revision 535)
+++ trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp	(revision 536)
@@ -471,6 +471,6 @@
 	}
 
-	if(compiler.pCompilingClass){
-		if( pUserProc->GetName() == compiler.pCompilingClass->GetName() ){
+	if( compiler.IsCompilingClass() ){
+		if( pUserProc->GetName() == compiler.GetCompilingClass().GetName() ){
 			////////////////////////////////////
 			// コンストラクタをコンパイルするとき
@@ -478,11 +478,11 @@
 
 			//コンストラクタのコンパイル開始を通知
-			compiler.pCompilingClass->NotifyStartConstructorCompile();
+			compiler.GetCompilingClass().NotifyStartConstructorCompile();
 
 			//基底クラスかどうかの識別
 			//（継承元がインターフェイスの場合も基底クラスと見なす）
 			BOOL bThisIsSuperClass;
-			if( !compiler.pCompilingClass->HasSuperClass() ) bThisIsSuperClass=1;
-			else if( compiler.pCompilingClass->GetSuperClass().GetConstructorMethod() == NULL ){
+			if( !compiler.GetCompilingClass().HasSuperClass() ) bThisIsSuperClass=1;
+			else if( compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod() == NULL ){
 				//インターフェイスを継承したときはコンストラクタを持たない
 				bThisIsSuperClass=1;
@@ -503,5 +503,5 @@
 					temporary[i4]=basbuf[i3];
 				}
-				if( compiler.pCompilingClass->GetSuperClass().GetName() == temporary ){
+				if( compiler.GetCompilingClass().GetSuperClass().GetName() == temporary ){
 					//基底クラスのコンストラクタを呼び出す
 					cp=i3;
@@ -520,6 +520,6 @@
 					Type dummyType;
 					CallProc( PROC_DEFAULT
-						, &compiler.pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc()
-						, compiler.pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc().GetName().c_str()
+						, &compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod()->GetUserProc()
+						, compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod()->GetUserProc().GetName().c_str()
 						, temporary
 						, Type()		// baseTypeはなし
@@ -530,5 +530,5 @@
 					//基底クラスのコンストラクタを暗黙的に呼び出す
 					Opcode_CallProc("",
-						&compiler.pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc(),
+						&compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod()->GetUserProc(),
 						0,
 						""
@@ -541,5 +541,5 @@
 
 			//デストラクタのコンパイル開始を通知
-			compiler.pCompilingClass->NotifyStartDestructorCompile();
+			compiler.GetCompilingClass().NotifyStartDestructorCompile();
 		}
 	}
@@ -567,11 +567,11 @@
 	//////////////////////////////////////////
 
-	if( compiler.pCompilingClass ){
-
-		if( compiler.pCompilingClass->IsCompilingConstructor() ){
+	if( compiler.IsCompilingClass() ){
+
+		if( compiler.GetCompilingClass().IsCompilingConstructor() ){
 			// コンストラクタをコンパイルしていたとき
 
 			// コンストラクタのコンパイルが完了したことを通知
-			compiler.pCompilingClass->NotifyFinishConstructorCompile();
+			compiler.GetCompilingClass().NotifyFinishConstructorCompile();
 		}
 		else if( pUserProc->IsDestructor() ){
@@ -581,11 +581,11 @@
 
 			// デストラクタのコンパイルが完了したことを通知
-			compiler.pCompilingClass->NotifyFinishDestructorCompile();
-
-			if( compiler.pCompilingClass->HasSuperClass() ){
+			compiler.GetCompilingClass().NotifyFinishDestructorCompile();
+
+			if( compiler.GetCompilingClass().HasSuperClass() ){
 				/* サブクラスのデストラクタをコンパイルしているときは、
 					基底クラスのデストラクタを呼び出す */
 
-				const CMethod *method = compiler.pCompilingClass->GetSuperClass().GetDestructorMethod();
+				const CMethod *method = compiler.GetCompilingClass().GetSuperClass().GetDestructorMethod();
 				if( method ){
 					Opcode_CallProc("",
Index: trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp	(revision 535)
+++ trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp	(revision 536)
@@ -194,5 +194,5 @@
 
 	//アクセシビリティをチェック
-	if(&objClass==compiler.pCompilingClass){
+	if( compiler.IsCompilingClass() && &objClass == &compiler.GetCompilingClass() ){
 		//同一クラスオブジェクトの場合はプライベートアクセスを容認する
 		if(pMember->IsNoneAccess()){
@@ -447,5 +447,5 @@
 	}
 
-	if(compiler.pCompilingClass){
+	if( compiler.IsCompilingClass() ){
 		//////////////////////
 		// クラスメンバの参照
@@ -460,5 +460,5 @@
 			pRelativeVar->dwKind=VAR_DIRECTMEM;
 
-			resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
+			resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() );
 			return true;
 		}
@@ -472,5 +472,5 @@
 			//クラス内の動的メンバを参照するとき（通常）
 
-			if( !compiler.pCompilingClass->HasDynamicMember( VarName ) )
+			if( !compiler.GetCompilingClass().HasDynamicMember( VarName ) )
 			{
 				goto NonClassMember;
@@ -483,6 +483,6 @@
 		if( isWriteAccess &&
 			pMethod->IsConst() &&
-			compiler.pCompilingClass->IsCompilingConstructor() == false &&
-			compiler.pCompilingClass->IsCompilingDestructor() == false
+			compiler.GetCompilingClass().IsCompilingConstructor() == false &&
+			compiler.GetCompilingClass().IsCompilingDestructor() == false
 			){
 				compiler.errorMessenger.Output(131, NULL, cp );
@@ -499,5 +499,5 @@
 			isErrorEnabled,
 			isWriteAccess,
-			Type( DEF_OBJECT, *compiler.pCompilingClass ),
+			Type( DEF_OBJECT, compiler.GetCompilingClass() ),
 			variable,
 			pRelativeVar,
@@ -559,8 +559,8 @@
 		}
 
-		if(compiler.pCompilingClass){
+		if( compiler.IsCompilingClass() ){
 			//自身のクラスから静的メンバを参照する場合
 			char temp2[VN_SIZE];
-			sprintf(temp2,"%s.%s",compiler.pCompilingClass->GetName().c_str(),VarName);
+			sprintf(temp2,"%s.%s",compiler.GetCompilingClass().GetName().c_str(),VarName);
 			pVar = compiler.GetObjectModule().meta.GetGlobalVars().Find( LexicalAnalyzer::FullNameToSymbol( temp2 ) );
 			if( pVar ){
Index: trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp	(revision 535)
+++ trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp	(revision 536)
@@ -193,5 +193,5 @@
 
 	// サブルーチン（ユーザー定義、DLL関数）の識別子、アドレスを取得
-	compiler.pCompilingClass = NULL;
+	compiler.SetCompilingClass( NULL );
 	ActiveBasic::Compiler::LexicalAnalyzer::CollectProcedures(
 		compiler.GetObjectModule().GetCurrentSource(),
Index: trunk/ab5.0/abdev/compiler_x86/NumOpe.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/NumOpe.cpp	(revision 535)
+++ trunk/ab5.0/abdev/compiler_x86/NumOpe.cpp	(revision 536)
@@ -430,5 +430,5 @@
 
 	if(lstrcmpi(termFull,"This")==0 && isProcedureCallOnly == false ){
-		if( compiler.pCompilingClass == NULL )
+		if( !compiler.IsCompilingClass() )
 		{
 			compiler.errorMessenger.Output(142,NULL,cp);
@@ -437,5 +437,5 @@
 
 		//Thisオブジェクト
-		resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
+		resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() );
 
 		SetThisPtrToReg( useReg );
