Index: trunk/ab5.0/abdev/BasicCompiler_Common/include/Class.h
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/include/Class.h	(revision 539)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/include/Class.h	(revision 540)
@@ -176,4 +176,6 @@
 	}
 
+	virtual void Using() const;
+
 	void Readed(){
 		isReady = true;
@@ -497,6 +499,4 @@
 	const CClass *Find( const std::string &fullName ) const;
 
-	void StartCompile( const UserProc *pUserProc );
-
 
 	/////////////////////////////
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp	(revision 539)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp	(revision 540)
@@ -14,4 +14,24 @@
 using namespace ActiveBasic::Compiler;
 
+void CClass::Using() const
+{
+	if( this->IsUsing() )
+	{
+		// 既に使用することになっている
+		return;
+	}
+
+	Prototype::Using();
+
+	// 仮想関数になるメソッドに使用チェックをつける
+	const CClass &objThis = *this;
+	BOOST_FOREACH( const CMethod *pMethod, objThis.GetDynamicMethods() )
+	{
+		if( pMethod->IsVirtual() )
+		{
+			pMethod->GetUserProc().Using();
+		}
+	}
+}
 
 bool CClass::IsClass() const
@@ -1153,19 +1173,4 @@
 	return Find( NamespaceScopes( AreaName ), NestName );
 }
-void Classes::StartCompile( const UserProc *pUserProc ){
-	const CClass *pParentClass = pUserProc->GetParentClassPtr();
-	if( pParentClass ){
-		pParentClass->Using();
-
-		// 仮想関数になるメソッドに使用チェックをつける
-		BOOST_FOREACH( const CMethod *pMethod, pParentClass->GetDynamicMethods() )
-		{
-			if( pMethod->IsVirtual() )
-			{
-				pMethod->GetUserProc().Using();
-			}
-		}
-	}
-}
 
 const CClass *Classes::GetStringClassPtr() const
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 539)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 540)
@@ -239,6 +239,9 @@
 	this->SetCompilingUserProc( pUserProc );
 
-	//コンパイルスタートをクラス管理クラスに追加
-	this->GetObjectModule().meta.GetClasses().StartCompile( pUserProc );
+	if( pUserProc->HasParentClass() )
+	{
+		// クラスの使用チェック
+		pUserProc->GetParentClass().Using();
+	}
 
 	// コンパイル中の関数が属する名前空間
Index: trunk/ab5.0/abdev/ab_common/include/Lexical/Prototype.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/Prototype.h	(revision 539)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/Prototype.h	(revision 540)
@@ -57,5 +57,5 @@
 		return isUsing;
 	}
-	void Using() const
+	virtual void Using() const
 	{
 		isUsing = true;
