Error when implementing methods of abstract class inherited from interface in some second class

Uranuz neuranuz at gmail.com
Wed Oct 30 03:14:49 PDT 2013


I don't even know if this is a bug or a feature of language. I 
will just put it here.

interface ITaskDoer
{
	int doTask1();
	string doTask2(string someName);
	
	bool doTask3(bool value);
	
}

abstract //Do abstract makes interface methods abstract?
class BaseTaskDoer: ITaskDoer
{
	override string doTask2(string someName)
	{	return "You have passed name: \"" ~ someName ~ "\"";
	}
	
	//Uncommenting this makes code working,
	//but this is not much pretty looking code
	//override {
	//	abstract int doTask1();
	//	abstract bool doTask3(bool value);
	//}
}

class TaskDoer: BaseTaskDoer
{
	override int doTask1()
	{	return 100; }
	
	override bool doTask3(bool value)
	{	return !value; }
	
}

void main()
{	import std.stdio;
	auto doer = new TaskDoer;
  	writeln(doer.doTask1()," ",doer.doTask2("John")," 
",doer.doTask3(true));
	
}

Compilation output:
/d124/f170.d(27): Error: function f170.TaskDoer.doTask1 does not 
override any function, did you mean to override 
'f170.ITaskDoer.doTask1'?
/d124/f170.d(30): Error: function f170.TaskDoer.doTask3 does not 
override any function, did you mean to override 
'f170.ITaskDoer.doTask3'?

Please tell me the right way deal with this case? Is it a bug or 
not?


More information about the Digitalmars-d mailing list