Hi, no, you did not understand: I'm not trying to create object from an interface. I'm having class Foo, that is _NOT_ inheriting Object, but it's still a typed class, and it's implementing interface IFoo. This is (or used to be) legal. I'm creating instances of that class, but the reference is of interface-type: // ------- test.vala ------- namespace Test { public interface IFoo { public abstract bool run(); } public class Foo : IFoo { public virtual bool run() { return true; } } public static void main() { IFoo ifoo = new Foo(); ifoo.run(); return; } } // ----- end test.vala ----- In my opinion it SHOULD be legal. I don't see a point why it's not legal now, and I don't understand the error message: error: missing class prerequisite for interface `Test.IFoo', add GLib.Object to interface declaration if unsure IFoo ifoo = new Foo(); ^^^^ As I'd understand this message, it means that an interface MUST have a prerequisite of a classed type. It's an absurd, why is it so? Can't I have an interface not having any prerequisites? Manual suggests so, the prerequisites list is optional. best regards, AW.
As far as I know, you cannot create objects from interfaces, so the line below is wrong: I rewrote your code in this way and it worked correctly: namespace Test { public interface IFoo : Object { public abstract bool run(); } public class Foo : Object, IFoo { public virtual bool run() { print("fuck\n"); return true; } } public static void main() { IFoo ifoo = new Foo(); ifoo.run(); return; } } If you like to learn how to use polymorphisms in you apps you can see my tutorias on launchpad <https://launchpad.net/vala-totrials>. I wish it can help you...
-- Mój klucz publiczny o identyfikatorze 1024D/E12C5A4C znajduje się na serwerze hkp://keys.gnupg.net My public key with signature 1024D/E12C5A4C is on the server hkp://keys.gnupg.net
Attachment:
signature.asc
Description: PGP signature