Я создал два класса, один из которых является интерфейсом для другого. Каждый раз, когда я пытаюсь создать экземпляр 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