PDA

View Full Version : Interfacce in C++


GordonFreeman
13-02-2006, 20:43
ciao,vorrei sapere come si fa in C++ a creare un'interfaccia che contenga solamente costanti intere,ad esempio in Java si potrebbe fare così:


public interface Constants {

static final int c1 = 1;
static final int c2 = 2;
...
}


e poi per riferirsi ad una delle costanti basta fare Constants.c1

e in C++ come si fa??

ho provato questo,con visual c++,



class Constants {
public:
static const int c1 = 1;
...
};



ma non me lo compila e dice che sto facendo una dichiarazione "pura" in modo errato perchè sto dichiarando una variabile invece di una funzione,e anche perchè ho messo "= 1" invece che "= 0"

cioè il compilatore crede che io stia dichiarando una funzione pura (cioè non implementata,come quelle delle interfacce java) mentre invece sto dichiarando una variabile :( :confused:

come si fa?

71104
13-02-2006, 23:07
eh, mi sa che non puoi ^_^
in C++ penso che non puoi inizializzare le variabili dentro la classe; l'unica soluzione che vedo è dichiarare la costante al di fuori o con const o con un #define; se il nome va a collidere usa un un namespace oppure usa una nomenclatura più specifica.

cionci
14-02-2006, 02:31
Le interfacce in C++ sono classi astratte con tutte funzioni virtuali pure...


class interfaccia
{
public:
static const int prova;
interfaccia() {};
int getX() = 0;
int setX(int x) = 0;
}

const int interfaccia::prova = 0;

71104
14-02-2006, 02:46
ah vero, non avevo pensato che poteva inizializzarla fuori dalla classe :)
troppo tempo col Java e col C mi ha fatto dimenticare il C++ :cry:

@GordonFreeman: poi per riferirti alla costante non devi fare NomeInterfaccia.NomeCostante come in Java, devi usare i due punti: int lol = NomeInterfaccia::NomeCostante;

GordonFreeman
14-02-2006, 14:43
si si lo so,quando mi riferisco a un membro statico di classe devo usare i due punti

ok grazie mille ;)