Avatar billede anadan Nybegynder
18. april 2004 - 12:07 Der er 5 kommentarer og
1 løsning

interfaces fra Java til C++

Hej, er ikke helt sikker på om det er det rigtige sted, da spørgsmålet omhandler både Java og C++...

Jeg sidder i øjeblikket og laver projekt, hvor der skal oversættes noget kode fra Java til C++. Eksemplet indeholder interfaces. Jeg ved at interfaces ikke findes i C++, og at interfaces i Java er lavet for at undgå multipel nedarvning som i C++, men er der ikke en anden måde at gøre det på, her tænker jeg en smart måde med header filer...
Avatar billede arne_v Ekspert
18. april 2004 - 12:11 #1
Interfaces eksisterer også i C++.

De hedder bare ikke noget specielt.

Java:

public interface IX {
  public int getV();
}

public class X implements IX {
  public int getV() {
      ...
  }
}

C++:

class IX
{
  public:
      virtual int getV() = 0;
};

class X : public IX
{
  public:
      virtual int getV();
}

En C++ klasse hvor alle metoder er virtual = 0 (svarer til abstract i Java)
er reelt et interface).
Avatar billede anadan Nybegynder
18. april 2004 - 12:20 #2
er det så muligt at lave instanser af IX klassen? det er jo ikke muligt med hverken abstract eller interfaces. Og hvis det er, hvad så med "diamon-of-death" problematikken? _Skal_ man implementere getV() metoden i IX klassen? Og hvad med interface nedarvning, som man kan i Java?
Avatar billede arne_v Ekspert
18. april 2004 - 12:26 #3
Nej. Man kan ikke instantiere en klasse med virtual = 0.

Man kan ikke implementere en virtual = 0 (= 0 betyder ingen implementation)

J
Avatar billede anadan Nybegynder
18. april 2004 - 12:31 #4
det løser jo diamond of death, men hvad med det sidste, eks:

public interface MyInterface extends MySuperInterface

her er det jo ikke nødvendigt at implementere metoden før du implementerer MyInterface
Avatar billede arne_v Ekspert
18. april 2004 - 12:50 #5
Ligesom i Java kan man i C++ lade en pure abstract klasse arve fra en
pure abstract klasse.
Avatar billede anadan Nybegynder
18. april 2004 - 12:51 #6
Jamen så løser det jo problemet :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB