2015-03-31 2 views
0

Я создал два класса, один из которых является интерфейсом для другого. Каждый раз, когда я пытаюсь создать экземпляр Transition_Model я получаю:Модуль VBA Object должен реализовывать ~?

Compile error: Object Module needs to implement '~' for interface'~'

моего понимание Реализации класса должен иметь копию всех общественных подлодок, функция, & свойств. Поэтому я не понимаю, в чем проблема?

Увидели похожие вопросы, но либо они относятся к actual Sub, либо они включают other complications, что делает ответ слишком сложным для меня, чтобы понять.

Также обратите внимание, что я попытался сменить Subs Transition_Model на приватный и добавить «IModel_» перед подзаголовками (точно так же, как верхний ответ во втором вопросе, который я связал), но я все равно получаю ту же ошибку.

IModel

Option Explicit 
Public Enum Model_Types 
     Transition 
     Dummy 
End Enum 
Property Get M_Type() As Model_Types 
End Property 
Sub Run(Collat As Collateral) 
End Sub 
Sub Set_Params(key As String, value As Variant) 
End Sub 

Transition_Model

Option Explicit 
Implements IModel 
Private Transitions As Collection 
Private Loan_States As Integer 
Private Sub Class_Initialize() 
    Set Transitions = New Collection 
End Sub 
Public Property Get M_Type() As Model_Types 
    M_Type = Transition 
End Property 
Public Sub Run(Collat As Collateral) 
    Dim A_Transition As Transition 
    Dim New_Balance() As Double 
    Dim Row   As Integer 

    For Row = 1 To UBound(Collat.Curr_Balance) 
     For Each A_Transition In Transitions 
      If A_Transition.Begining = i Then 
       New_Balance = New_Balance + Collat.Curr_Balance(Row) * A_Transition.Probability 
      End If 
     Next A_Transition 
    Next 
End Sub 
Public Sub Set_Params(key As String, value As Double) 
    Dim Split_key(1 To 2) As String 
    Dim New_Transition As Transition 

    Split_key = Split(key, "->") 
    Set New_Transition = New Transition 

    With New_Transition 
     .Begining = Split_key(1) 
     .Ending = Split_key(2) 
     .Probability = value 
    End With 

    Transitions.Add New_Transition, key 
End Sub 

Наконец Суб я использую, чтобы проверить мой класс

Sub Transition_Model() 
    Dim Tested_Class As New Transition_Model 
    Dim Collat As New Collateral 

    'Test is the model type is correct 
    Debug.Assert Tested_Class.M_Type = Transition 

    'Test if Model without transition indeed does not affect balances of its collateral 
    Collat.Curr_Balance(1) = 0.5 
    Collat.Curr_Balance(2) = 0.5 

    Tested_Class.Run (Collat) 

    Debug.Assert (_ 
     Collat.Curr_Balance(1) = 0.5 And _ 
     Collat.Curr_Balance(2) = 0.5) 

End Sub 

ответ

0

Actaully За второй вопрос я связан есть правильный ответ, который я пропущенный.

Все участники должны начать с 'IModel_' и оставить имя, которое должно совпадать с именем в IModel.

И

Это часть я пропустил, вы не можете использовать подчеркивание в Суб имени.

Смежные вопросы