Interface question
David Medlock
noone at nowhere.com
Thu Aug 31 04:41:41 PDT 2006
Charles D Hixson wrote:
> xs0 wrote:
>
>>
>>> I guess what I'm going to need to do is derive everything from a
>>> common ancestral class...and that means that the derived classes
>>> CAN'T descend from anything else, *sigh*. The common ancestor will
>>> need to be a totally abstract class, so I thought an interface would
>>> be a better choice, but it looks like there's no way to make it
>>> work...because they've all got to implement a common constructor
>>> type, and the compiler has to KNOW that they do so.
>>
>>
>> Hmm.. why exactly do you need a common constructor type? When you
>> create an object, you must know its exact type (and constructors)
>> anyway, so how does it matter?
>>
>>
>> xs0
>
> I think maybe you're right. If so, then I probably can't do what I want
> to do in D. I'd been thinking that if I just worked ahead I'd be able
> to solve the problem of "somehow" using the thing that I'd created, if I
> could only create it. And I could refer to it from the ancestral
> reference. But I hadn't been able to figure out the details, so I was
> just trying to work my way forwards. But maybe I can't do it at all.
>
> (Well, this isn't literally true, of course. I could always define
> everything in terms of a Vector of bytes. But in so doing I give up
> most of what makes Computer Languages different from assembler.)
>
> I guess that means that it's back to Python. At least I can drop into
> Pyrex when I hit places that are performance bottlenecks. Or even into
> C. (I may truly dislike C with it's wild use of pointers, but it *is*
> possible. And it's about the same speed as D. [I don't really believe
> that shootout that says that D is faster. How *can* it be?])
(Ignore this if I am misreading you - David)
I don't quite 'get' what you are trying to accomplish(not technically
but in a design sense).
Unless you are attempting to add compiled classes at runtime, I would be
surprised if D could not accomplish what you are doing.
To create an object which has a known constructor, use a template
function/object....but there is a better way.
Have your objects created with no argument constructors then configured
using a common method. I have a text format(XML lite) I use in which
each node is a 'constructor' for an object. Then the children of the
node are passed to the config() method of the object. In this way I can
have many similar objects which are combined in different ways.
Is this close to what you are trying?
-David
More information about the Digitalmars-d-learn
mailing list