Some help on Mixin Template at Class level.

Matthew Ong ongbp at yahoo.com
Mon May 23 00:18:05 PDT 2011


On 5/23/2011 2:17 AM, Simen Kjaeraas wrote:
> On Sat, 21 May 2011 11:40:22 +0200, Matthew Ong <ongbp at yahoo.com> wrote:
>
>> Using your code I have this error:
>>
>> src\Sample.d(16): Error: undefined identifier btype, did you mean
>> template AType(string name,U,alias V)?
>> src\Sample.d(16): Error: mixin AType!("ClassB",string,_error_) does
>> not match template declaration AType(string name,U,alias V)
>>
>> Could you please ensure it is compilable code and so that I can test
>> the template shown by you.
>
> Sorry about that.
>
>
> string ATypeGenerator( string name ) {
> return "class " ~ name ~ " : ClassC {
> private:
> U value;
> public:
> this(){}
> void print(){}
> mixin V;
> }";
> }
>
> mixin template AType( string name, U, alias V ) {
> mixin( ATypeGenerator( name ) );
> }
>
> class ClassC {}
>
> mixin template btype() {
> void someFunction() {}; // Content of a class.
> }
>
> mixin AType!("ClassB", string, btype);
>
> void main() {
> ClassC r = new ClassB();
> }
>
Thanks simen. I have solve that issue.

Someone also pointed out:

template mydef(string name){
}

mixin(mydef!("abc"));

The above are NOT shown up left hand side of that when we click on 
Language Reference
http://www.digitalmars.com/d/2.0/lex.html
And also here.
http://www.digitalmars.com/d/2.0/comparison.html

not the same as:
mixin template mydeff(T){
...
}

mixin mydeff!(string);

Some centralized documentation is needed for D.

-- 
Matthew Ong
email: ongbp at yahoo.com



More information about the Digitalmars-d-learn mailing list