How to say to compiler that I want to inherit final template bethod of base interface into derived class

Uranuz via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jul 20 05:30:18 PDT 2014


The question is in the header:
How to say to compiler that I want to inherit final template 
bethod of base interface into derived class?

I have the following example. I know that it is maybe 
overcomplicated but still I need this feature in my code.

import std.stdio;

interface IBase
{
	
	template getStr(string fieldName)
	{
		final string getStr()
		{
			return "George";
		}
	}
	
	
	string getStr(string fieldName);
}


class Derived: IBase
{
	override string getStr(string fieldName)
	{
		return "Sam";
	}
	
}


void main()
{
	auto obj = new Derived;
	
	writeln( obj.getStr!("aaa")() );
	
}

Compilation output:
/d907/f266.d(33): Error: obj.getStr isn't a template


When I have all of these methods having the same name compiler 
shadows template method from the base interface. So the question 
is how to inherit template method without reimplementing it in 
derived class?


More information about the Digitalmars-d-learn mailing list