Why can't a method be virtual AND static at the same time?

Martin Cejp minexew at gmail.com
Wed Jan 29 05:30:53 PST 2014


This is a feature I've always missed in C++. Consider the code
below:

import std.stdio;

interface Logger {
	void print(string msg);
}

class ConsoleLogger : Logger {
	static override void print(string msg) {
		writeln(msg);
	}
}

void main() {
	Logger logger = new ConsoleLogger;
	
	ConsoleLogger.print("Hello, World!");
}

Such definition of ConsoleLogger fails to compile. I don't see
any drawbacks to allowing this though, except the compiler would
probably have to generate 2 methods internally.
The way it is now, you have to either define each method twice or
always create an instance.
Or am I missing an obvious solution?


More information about the Digitalmars-d mailing list