Converting a 4 argument class to int?

  • Thread starter Thread starter pazmush
  • Start date Start date
  • Tags Tags
    Argument Class
AI Thread Summary
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.
pazmush
Messages
32
Reaction score
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

eg/

Vec4 A(i,j,k,1) = 1;


does this make any sense?
 
Technology news on Phys.org
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.
 
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
 
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. :redface:

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

HTH
 
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...
Back
Top