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