Thread overview | |||||
---|---|---|---|---|---|
|
October 08, 2003 On the implementation of a generalized Stack class | ||||
---|---|---|---|---|
| ||||
Would it be more appropriate to implement a stack class as a template, or as a stack of objects? What are the tradeoffs? |
October 08, 2003 Re: On the implementation of a generalized Stack class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Charles Hixson | "Charles Hixson" <charleshixsn@earthlink.net> escreveu na mensagem news:bm1lim$30th$1@digitaldaemon.com... > Would it be more appropriate to implement a stack class as a template, or as a stack of objects? What are the tradeoffs? An object Stack isn't type safe, and you need to cast the objects to their correct types. Also, since everything isn't an object, it can't be used with primitives other than object references. If you have a template Stack you can have both ways: module stack; template TStack(T) { class Stack { ... } } alias instance TStack(Object).Stack Stack; The users can use an unsafe stack.Stack or instantiate their own stack.TStack(T).Stack I don't recommend creating such alias, since it endorses an unsafe style of programming Best regards, Daniel Yokomiso. "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." - Edsger W. Dijkstra --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.524 / Virus Database: 321 - Release Date: 6/10/2003 |
October 09, 2003 Re: On the implementation of a generalized Stack class | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Yokomiso | Daniel Yokomiso wrote:
> "Charles Hixson" <charleshixsn@earthlink.net> escreveu na mensagem
> news:bm1lim$30th$1@digitaldaemon.com...
> ...
> An object Stack isn't type safe, and you need to cast the objects to their
> correct types. Also, since everything isn't an object, it can't be used with
> primitives other than object references. If you have a template Stack you
> can have both ways:...
> module stack;
>
> template TStack(T) {
> class Stack {
> ...
> }
> }
>
> alias instance TStack(Object).Stack Stack;
>
>
> The users can use an unsafe stack.Stack or instantiate their own
> stack.TStack(T).Stack
> I don't recommend creating such alias, since it endorses an unsafe style of
> programming
>
> Best regards,
> Daniel Yokomiso.
> ...
Is there a classId accessible at run time? If so one could construct a dual stack, which would know the type of the item being stored. Then the basic implementation could be of the form:
class ostack
{ void push (Object item, int type)....
void pop (Object item, int type)....
int toptype () ....
}
and the user interface classes could be safely implemented?
For that matter, what *ARE* the introspection capabilities of D?
|
Copyright © 1999-2021 by the D Language Foundation