PDA

Visualizza la versione completa : [C++] struttura che contiene puntatore ad altra struttura


melmar20
13-10-2008, 17:31
ciao a tutti ho creato una classe template in c++ e un nuovo tipo struc. Questo il codice



struct tipoelem{
int num_dischi;
int ritorno;
Pilapunt<int> * puntA,puntB,puntC;};

//dichiaro una pila di appoggio
Pilapunt <tipoelem> pila;


mi viene segnalato sempre un errore, che dice :



main.cpp `main(int, char**)::tipoelem' uses local type `main(int, char**)::tipoelem'
main.cpp trying to instantiate `template<class T> class Pilapunt'
main.cpp invalid type in declaration before ';' token


Non riesco proprio a capire dove sbaglio, c' qualcuno che riesce capire dov' l'errore?

Stoicenko
13-10-2008, 17:32
Il tipo template deve essere dichiarato prima di essere utilizzato.. metti la dichiarazione di struct dopo la dichiarazione del template

melmar20
13-10-2008, 17:57
ma io il template lo importo con la clausola #include "pilapunt.h"

Stoicenko
13-10-2008, 18:00
prova a dichiararlo lo stesso.. cmq molto strano.. posta meglio il codice e l'errore comprensivo di numeri di riga

melmar20
13-10-2008, 18:06
il codice praticamente solo quello, perch volevo fare una prova per vedere se funzionasse, prima di andare avanti, ed infatti ecco qui questo bel problema!!

Stoicenko
13-10-2008, 18:08
b... nel main c' solo la dichiarazione
Pilapunt <tipoelem> pila;

??

e all'esterno del main c' la struct?

Prova aggiungendo la dichiarazione del template prima della struct e vedi cosa dice il compilatore..

E posta l'intero cpp dove c' il main per cortesia che ci diamo un'occhiata..

melmar20
13-10-2008, 18:13
guarda mi ha aperto veramente gli occhi!!

mettevo al dichiarazione della struc nel main e non fuori, anche perch non so perch obbligatorio metterla fuori (magari su questo cerco di documentarmi un po)....

Comunque grazie mille davvero!!

Cia!!

Stoicenko
14-10-2008, 09:38
Il main un metodo del thread principale..

Non si possono definire tipi, classi, strutture, enumerazioni, funzioni, ecc.. dentro il corpo di un metodo o di una funzione

MItaly
14-10-2008, 16:15
Originariamente inviato da Stoicenko
Non si possono definire tipi, classi, strutture, enumerazioni, funzioni, ecc.. dentro il corpo di un metodo o di una funzione
O meglio, si possono definire solo strutture e unioni anonime. Ad esempio, questo lecito


void test()
{
struct
{
int a;
int b;
} miaVar;
miaVar.a = 10;
miaVar.b = 40;
}

ma questo no


void test()
{
struct Struttura
{
int a;
int b;
};
Struttura miaVar;
miaVar.a = 10;
miaVar.b = 40;
}

.

Stoicenko
14-10-2008, 16:21
Ottima precisazione, questa non la sapevo.

Loading