One thing I've been trying to figure out is how to do the following in D:

class foo
{
    string bar();
};

void foo::bar()
{
    return "hello world!";
}

From what I can gather constructs like this just aren't allowed in D, but I don't understand why, can anyone explain it please? I know they're only in C++ because it uses #include instead of importing compiled modules, but I find it hard to quickly get a general idea of what a class is supposed to do when there are function definitions strewn about it.

The other thing I want to know is about the mixin() command, and what the limitations of it are; I know it runs an interpreted version of D, but I get the feeling that it isn't as powerful as the compiled version, because no one seems to have tried making something like this:

class example : File
{
     mixin(d.flex(`lex_file.l`));
     mixin(d.bison(`bison_file.y`));
};

void main()
{
     example("some_file.txt");
     example.yyparse();
};

Is this because it isn't possible to do such things, or because it would be rather pointless to do so compared to simpler approaches, (in this case calling the C function output by flex/bison).


Reply via email to