The discussion revolves around the possibility of assigning a class instance, specifically a Vec4 object, directly to an integer in Visual Basic. The original poster seeks clarification on how to implement this concept, expressing confusion about the syntax and functionality. Participants explain that the proposed assignment (Vec4 A(i,j,k,1) = 1) is not valid. Instead, they suggest using properties to manage the values within the Vec4 class. Examples are provided for both VB.Net and VB6/VBA, illustrating how properties serve as intermediaries between private member variables and external code, allowing for value validation upon assignment. The conversation emphasizes the importance of understanding property methods, including how to create read-only and write-only properties, and how to validate input types effectively. Overall, the thread highlights the need for clarity in property usage and the correct approach to class instantiation and assignment in Visual Basic.
#1
pazmush
32
0
i was wondering whether it was possible to have a class say Vec4(i,j,,k,n) and then being able to assign it as an int
I'm not quite sure what language you're talking about (C,C++,C#?), but I think you can only check the return with "function = 1" unless you're setting a property in which case "A" is the property and "i,j,k,1" are the arguments.
I only know VB well, so I can tell you that's the way it works in there.
#3
pazmush
32
0
i am using visual basic, but i don't really understand what you are saying, do you reacon you could break it down a bit for me
thanks
#4
Tanner65
28
0
pazmush said:
i am using visual basic, but i don't really understand what you are saying, do you reacon you could break it down a bit for me thanks
Surely.
I'm trying to wrap my head around what you're asking.
What you typed, to my knowledge, will not work. If you can explain what you're trying to do, I can get a better idea of it.Note: I'm going to describe both the VB.Net version and VB6/VBA version of properties, feel free to skip the property stuff.
Note2: If any of this is incorrect, please someone feel free to correct me, I don't know everything and only novice to intermediate expertise in .Net or VB6. In other words, someone confirm this for me.
In property terms of what I was thinking you could do is something like this:
Code:
'Random class/random function
dim Vec4 as Class
Vec4.A(i,j,k,l) = 1
or you can check the return function
Code:
'Random class/random function
Dim Vec4 as Class
if Vec4.A(i,j,k,l) = 1 then
...
end if
The property stuff:
According to Wikipedia a property is a intermediary between a private member variable and the outside world. (Code examples from same link).
VB6/VBA:
Code:
' in a class named clsPen
Private m_Color As Long 'Private member variable
Public Property Get Color() As Long 'Public reading function
Color = m_Color
End Property
Public Property Let Color(ByVal RHS As Long) 'Public writing procedure
m_Color = RHS
End Property
VB.Net:
Code:
' in a class named clsPen
Private m_Color As Integer ' Private field
Public Property Color As Integer ' Public property
Get
Return m_Color 'Public reading function
End Get
Set(ByVal Value As Integer)
m_Color = Value 'Public writing procedure
End Set
End Property
All you see as the developer when you're writing to clsPen.Color is:
Writing:
Code:
clsPen.Color=4
Reading:
Code:
A = clsPen.Color
As mentioned in the link, properties adds a level abstractness between the outside code and the private member, so you can actually check to make sure that the value passed is within a range or is a color. You can do this by using built in functions or outside functions.
Validating information to set is a number:
Valdidating in VB6/VBA:
Code:
' in a class named clsPen
Private m_Color As Long 'Private member variable
Public Property Get Color() As Long 'Public reading function
Color = m_Color
End Property
Public Property Let Color(ByVal RHS As Object) 'Public writing procedure
'Long changed to object to allow more abstractness to what is sent to it
' without throwing error, not necessarily correct, but shows the functionality
' of the Let statement
If IsNumeric(m_Color) then m_Color = RHS
'Or
'If TypeName(m_Color) = "Long" then m_Color = RHS
End Property
Validating in VB.Net:
Code:
' in a class named clsPen
Private m_Color As Integer ' Private field
Public Property Color As Object' Public property
Get
Return CObj(m_Color) 'Public reading function
'(CObj converts the integer to an Object)
End Get
Set(ByVal Value As Object)'Public writing procedure
If IsNumeric(Value) then m_Color = Value
'Or the more proper way
'If TypeOf(Value) Is Integer then m_Value = Value
'TypeOf is better than TypeName (imho) because TypeOf is
' returning the value to be compared against a static value
' rather than the string name. I use TypeOf all the time to
' verify things in control loops. Remember use "Is" between
' objects and "=" between everything else to verify it
End Set
End Property
Also, using properties you can make a property read only or write only.
Read only in VB6/VBA:
Code:
' in a class named clsPen
Private m_Color As Long 'Private member variable
Public Property Get Color() As Long 'Public reading function
Color = m_Color
End Property
Write only in VB6/VBA:
Code:
' in a class named clsPen
Private m_Color As Long 'Private member variable
Public Property Let Color(ByVal RHS As Long) 'Public writing procedure
m_Color = RHS
End Property
Read only in VB.Net:
Code:
' in a class named clsPen
Private m_Color As Integer ' Private field
Public ReadOnly Property Color As Integer ' Public property
Get
Return m_Color 'Public reading function
End Get
End Property
Write only in VB.Net
Code:
' in a class named clsPen
Private m_Color As Integer ' Private field
Public WriteOnly Property Color As Integer ' Public property
Set(ByVal Value As Integer)'Public writing procedure
m_Color = Value
End Set
End Property
Dear Peeps
I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are
Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C.
I also need to learn C++, Matlab and for personal interest Haskell.
For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...