Types Inheritance - Naming problem
BlitzMax Forums/BlitzMax Programming/Types Inheritance - Naming problem
| ||
Maybe I'm beeing completely daft, but I have a problem when I'm tying to create an nice way to express iherited classes. Look at this example. It is a type called Foo that contains a type called Bar that is accessable trough Foo.BarStrict Type Foo Field Bar:Bar = New Bar End Type Type Bar Field SomeValue:Int = 1 End Type Global myFoo:Foo = New Foo DebugLog myFoo.Bar.SomeValueThis example does not work. The problem occurs when I try to assign the "Bar" Field in the "Foo" type. There is a name collision an with the field having the same name as the type that I'm trying to create. If we adjust the example like this...: Strict Type Foo Field BarName:Bar = New Bar End Type Type Bar Field SomeValue:Int = 1 End Type Global myFoo:Foo = New Foo DebugLog myFoo.BarName.SomeValue...everything works fine. But the point is that I want the Field name to be same as the type name because it makes the syntax for retriving "SomeValue" more logical: myFoo.Bar.SomeValue Maybe it is my method of implementing this type of inheritance that is comletely wrong. Ideas anyone? |
| ||
This is no inheritance. Inheritance would be with type foo end type type bar extends foo end type |
| ||
Well, yeah you are right. It's not inheritance in the traditional sense. What should I call it then...Object inheritance? |
| ||
That's just the way max is. Stick a T in front of your type names. Bar:Tbar=new Tbar. Not the answer you were hoping for, but it's an answer. |
| ||
It has nothing to do with inheritance, so no kind of inheritance. It is a simple object reference. |
| ||
I simply place an underscore in front of all field variables which prevents naming conflicts.Type Foo Field _bar:Bar End Type |
| ||
What Falken said, and it would look like this:Strict Type TFoo Field Bar:TBar = New TBar End Type Type TBar Field SomeValue:Int = 1 End Type Global Foo:TFoo = New TFoo DebugLog Foo.Bar.SomeValue |
| ||
@Dreamora Object reference! Thank you! That was the word I was looking for. @Falken, Robert, Wave. Yeah, but what you are saying is what I already did in the second example in the original post. So the question is not how to solve it. I know that. The point Í'm making is that a field or variable name can not be the same as the name of a type. |
| ||
What should I call it then...Object inheritance? Actually the correct buzzword is a composite object. (As in an object that is composed of others). |