gpt4 book ai didi

excel - 变量类型的自定义类的父对象

转载 作者:行者123 更新时间:2023-12-02 22:26:28 26 4
gpt4 key购买 nike

我认为我正在用 VBA 编写一个相当复杂的东西,尽管我做了很多研究,但到目前为止我还无法找到解决我的问题的方法。不幸的是我不是专家:)

我有两门课,例如clsBuildingclsFactory,它们都有一个 clsHeatDemand 实例。现在我正在尝试实现一个 parent-Property 来访问计算所需的基类中的一些值,基于 this主意。

Friend Property Get Parent() As clsBuilding
Set Parent = ObjFromPtr(parentPtr)
End Property
Friend Property Set Parent(obj As clsBuilding)
parentPtr = ObjPtr(obj)
End Property

我现在的问题是,parent 可以是两种不同的类型,即使它们具有我需要的相同参数。所以我想问的是是否有一种方法可以将实例简单地作为 obj As Object 移交并仍然访问其属性?

我也尝试过使用 Interfaces,但如果有其他更简单的解决方案,我会很高兴。

最佳答案

不知道对你有没有帮助,你看看吧。

' 具有不同父级的类

Option Explicit

Private m_parent As Variant

Public Property Get Parent() As Variant
Set Parent = m_parent
End Property

Public Property Set Parent(ByVal vNewValue As Variant)
Set m_parent = vNewValue
End Property

Public Function Name()
If TypeName(m_parent) = "ParentA" Then
Name = m_parent.Name
Else
Err.Raise 123, "Parent doesn't have Name"
End If
End Function

Public Function Height()
If TypeName(m_parent) = "ParentB" Then
Height = m_parent.Height
Else
Err.Raise 456, "Parent doesn't have Height"
End If
End Function

' 父级 A

Public Name As String

Public Age As Integer

' 父级B

Public Height As Double

Public Weight As Double

'测试

Sub test()
Dim c As Class
Set c = New Class

Dim pa As ParentA
Set pa = New ParentA
pa.Age = 5
pa.Name = "Parent A"

Dim pb As ParentB
Set pb = New ParentB
pb.Height = 15.5
pb.Weight = 50.5

Set c.Parent = pa
Debug.Print c.Name


Set c.Parent = pb
Debug.Print c.Height
Debug.Print c.Name
End Sub

关于excel - 变量类型的自定义类的父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53100538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com