Klasseninstanz = Klassenreferenz? ---Problem mit Klassen in VB6

GoodOld1

Grünschnabel
Hallo!
Ich habe folgendes Problem: Ich habe in meinem Programm 2 klassen definiert:

Class1 heißt Simplextab:
Code:
Public Property Set Tableau(ByVal Tabb As S_Tab)
    Set STab = Tabb
End Property

Public Property Get Tableau() As S_Tab
    Set Tableau = STab
End Property

Class2 wird von Class1 verwendet und heißt S_TAb

Code:
Dim ST As S_Tab1

Private Type S_Tab1
    BasisVarAnz As Integer
    NichtbasisVarAnz As Integer
    B() As String
    NB() As String
    Zellen() As Single
End Type

Public Property Let BasisVarAnz(ByVal BVA As Integer)
    ST.BasisVarAnz = BVA
End Property
Public Property Get BasisVarAnz() As Integer
    BasisVarAnz = ST.BasisVarAnz
End Property

Public Property Let NichtbasisVarAnz(ByVal NBVA As Integer)
    ST.NichtbasisVarAnz = NBVA
End Property
Public Property Get NichtbasisVarAnz() As Integer
    NichtbasisVarAnz = ST.NichtbasisVarAnz
End Property

Ich nehme an, dass man daran deutlich erkennt, dass es sich um Klassen handelt, die für die Lösung eines LP-Problems mit dem Simplexalgorithmus benutzt werden.
Jedenfalls habe ich eine Prozedur geschrieben, die eine Simplexiterration durchführt. In dieser werden 2 Instanzen der Klasse Simplextab erstellt. [Eine soll das alte Tableau darstellen und die andere soll das nächste Tableau darstellen (Iterrationstableau)]
Das wesentliche ist jedoch, dass wenn ich die Eigenschaft der einen Instanz ändere, die andere Instanz ihre Eigenschaft auch ändert

Code:
Function Next_STT(ByVal STT1 As Simplextab, StoppReason As String) As Simplextab
    Dim NextSTT As New Simplextab
    Set NextSTT = STT1
    Dim Old_Stt As New Simplextab
    Set Old_Stt = STT1
    
    NB_1 = Old_Stt.Tableau.NB(c)
    B_1 = Old_Stt.Tableau.B(r)
    NextSTT.Tableau.B(c)  =  NB_1
    NextSTT.Tableau.NB(r)  = B_1 
End Function

Dies ist natürlich nicht die ganze Funktion sondern nur ein Teil, der dieses Problem zeigt.
Wenn ich nun die Funktion debugge stellt sich raus, das Old_Stt.Tableau auch sein Wert geändert hat und zwar:
NextSTT.Tableau.B(c) = Old_Stt.Tableau.B(c)
NextSTT.Tableau.NB(c) = Old_Stt.Tableau.NB(c)


Ich bitte um Hilfe, denn ich weiß wirklich nicht wie das passiert sein kann...

Mfg GoodOld1
 
Zuletzt bearbeitet:
Zurück