假設我有一個名爲Vc的類,它表示一個幾何向量AB。我們可以通過兩個點(xA,yA,xB,yB)或點,距離和角度(xA,yA,Len,Angle)定義一個向量。兩個VBA類屬性可以相互寫入以模擬重載嗎?
我想編寫Vc類,使其屬性可以是可選的(以適應上述兩種定義方法),並自動執行「填充缺失的可選 數據」所需的計算:即if用戶寫入屬性xA,yA,xB,yB,然後 缺少的屬性Len和Angle將由代碼 自動計算,反之亦然。
我們簡單的編碼,我將把類似的問題,而不是 幾何問題:
假設我有兩個數字NBA和NbB的,與NBA = 2 NbB的,用戶可以輸入NBA或NbB的,
我嘗試這個代碼,希望至少NbB的由NBA 來計算(或輸入的由用戶)
Private pNbA As Double
Private pNbB As Double
Public Property Get NbA() As Double
NbA = pNbA
End Property
Public Property Let NbA(value As Double)
pNbA = value
End Property
Public Property Get NbB() As Double
NbB = pNbB
End Property
Public Property Let NbB(NbA As Double)
pNbB = NbA * 2
End Property
但是在測試時我NbB的= 0(而NBA = 1):
Sub TestAbove()
Dim aTest As TestClass
Set aTest = New TestClass
aTest.nbA = 1
MsgBox aTest.nbB 'this gives 0
End Sub
我希望我能在屬性中解決這個問題 部分的類本身,而不訴諸編寫的,將引入的定義重複, 恐怕方法很多 。
如果爲NbB寫一個對稱部分,那麼在運行時我可以利用這個關係或者這個關係,但是不能同時使用這兩個關係......正如我現在嘗試的那樣。 –
@ZiadElHachem如果這兩個值都是空的,那麼無論如何你都沒有任何東西可以返回。這就是爲什麼我建議你採用構造函數的方法,根據用戶輸入事先正確計算所有值。 – GSerg
通過說'構造函數':你的意思是規則模塊中的常規函數,它可以計算NbA和NbB並提供給類,賴特? –