mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
31 lines
495 B
Plaintext
31 lines
495 B
Plaintext
module mylib::ifaces;
|
|
interface IOp
|
|
{
|
|
fn void op();
|
|
}
|
|
module mylib <Type>;
|
|
import std::io;
|
|
import mylib::ifaces;
|
|
struct Op (IOp)
|
|
{
|
|
Type data;
|
|
}
|
|
fn void Op.op(&self) @dynamic => io::printn("op");
|
|
module myapp;
|
|
import mylib;
|
|
fn void test(void* tptr)
|
|
{
|
|
// this work
|
|
IOp iop = (Op{int}*)tptr;
|
|
iop.op();
|
|
|
|
// this don't work
|
|
iop = tptr; // #error: Casting a 'void*' to 'IOp' is not permitted
|
|
iop.op();
|
|
}
|
|
fn void main(String[] args)
|
|
{
|
|
Op{int}* t = mem::new(Op{int}, {.data = 1});
|
|
test(&t);
|
|
}
|