Converting a 4 argument class to int?

  • Thread starter Thread starter pazmush
  • Start date Start date
  • Tags Tags
    Argument Class
Click For Summary

Discussion Overview

The discussion revolves around the feasibility of converting a class with multiple arguments, specifically a class named Vec4, into an integer in Visual Basic. Participants explore how to assign a class instance to an integer and clarify the mechanics of properties in Visual Basic.

Discussion Character

  • Exploratory
  • Technical explanation
  • Conceptual clarification

Main Points Raised

  • One participant questions whether it is possible to assign a class instance, Vec4(i,j,k,n), directly to an integer.
  • Another participant suggests that the assignment may only work through a function or property, indicating uncertainty about the specific programming language being used.
  • A participant expresses confusion about the previous explanation and requests a breakdown of the concepts discussed.
  • Further elaboration on properties in Visual Basic is provided, including examples from both VB.Net and VB6/VBA, discussing how properties can act as intermediaries between private member variables and external code.
  • Participants discuss the validation of values being set through properties, highlighting different approaches in VB6/VBA and VB.Net.

Areas of Agreement / Disagreement

There is no consensus on whether the original assignment of a class instance to an integer is valid. Multiple viewpoints exist regarding the mechanics of properties and their usage in Visual Basic.

Contextual Notes

Participants express varying levels of familiarity with Visual Basic, which may affect their interpretations and suggestions. The discussion includes technical details that may depend on specific versions of 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
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 36 ·
2
Replies
36
Views
6K
  • · Replies 35 ·
2
Replies
35
Views
4K
  • · Replies 9 ·
Replies
9
Views
3K
Replies
55
Views
7K
  • · Replies 52 ·
2
Replies
52
Views
4K
  • · Replies 36 ·
2
Replies
36
Views
3K
  • · Replies 15 ·
Replies
15
Views
5K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 75 ·
3
Replies
75
Views
7K