[AYUDA] Interface?

Iniciado por Miseryk, 24 Noviembre 2015, 01:01 AM

0 Miembros y 1 Visitante están viendo este tema.

Miseryk

Buenas a todos, estoy necesitando hacer algo pero no sé como lo puedo llegar a lograr, la cuestión es la siguiente, tengo un código en Java y quiero pasarlo a Visual C++ (2013):

Yo en otro lenguaje tengo lo que es una Interface (java)

Código (java) [Seleccionar]

public Interface IClase
{
    public void Funcion1();
    public void Funcion2();
}

public class A implements IClase
{
    @Override
    public void Funcion1()
    {
        //CODIGO
    }

    @Override
    public void Funcion2()
    {
        //CODIGO
    }
}

public class B implements IClase
{
    @Override
    public void Funcion1()
    {
        //CODIGO
    }

    @Override
    public void Funcion2()
    {
        //CODIGO
    }
}

public class C implements IClase
{
    @Override
    public void Funcion1()
    {
        //CODIGO
    }

    @Override
    public void Funcion2()
    {
        //CODIGO
    }
}

public class Tester
{
    private IIClase prueba;

    public void setPrueba(IClase param1)
    {
        this.prueba = param1;
    }
}

void setUp()
{
    Test Test1 = new Test();
    A A1 = new A();
    B B1 = new B();
    C C1 = new C();

    Test1.setPrueba(A1);
    Test1.setPrueba(B1);
    Test1.setPrueba(C1);
}


Qué significa ésto? Significa que dentro de la clase Test tengo una variable como una interface y que tengo 3 clases "diferentes" que comparte una lógica y quiero poder "meter" dentro de esa variable, cualquiera de esas 3 clases, pero C++, alguna idea?

Mientras sigo buscando alguna solución.

No me importa si es programación ninja o villera, quiero poder hacerlo.

Gracias!
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

ivancea96

Un ejemplo:

Código (cpp) [Seleccionar]
class IClase{
public:
    virtual void Funcion1() = 0;
}

class A : public IClase{
public:
    virtual void Funcion1(){
        //...
    }
}

Miseryk

Cita de: ivancea96 en 24 Noviembre 2015, 16:31 PM
Un ejemplo:

Código (cpp) [Seleccionar]
class IClase{
public:
    virtual void Funcion1() = 0;
}

class A : public IClase{
public:
    virtual void Funcion1(){
        //...
    }
}


Sí, éso es todo muy lindo, pero no puedo hacer

Código (cpp) [Seleccionar]

Class Test
{
    public:
        IClase MyIClase; //Error 1 error C2259: 'IClase' : cannot instantiate abstract class,

}
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

ivancea96

Porque es una clase abstracta. Una clase abstracta no se puede instanciar, va en contra de la utilidad de una clase abstracta. De la misma forma, una interface no se instancia.

¿Por qué quieres crear un objeto de una clase abstracta? Estarías creando un objeto sin sentido.

Si lo que quieres es guardar dentro de una variable de la clase IClase, un objeto que herede de esta, tendrás que hacer un puntero.