Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655

    struttura che contiene puntatore ad altra struttura

    ciao a tutti ho creato una classe template in c++ e un nuovo tipo struc. Questo il codice

    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 :

    codice:
    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?

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Il tipo template deve essere dichiarato prima di essere utilizzato.. metti la dichiarazione di struct dopo la dichiarazione del template

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    ma io il template lo importo con la clausola #include "pilapunt.h"

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    prova a dichiararlo lo stesso.. cmq è molto strano.. posta meglio il codice e l'errore comprensivo di numeri di riga

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    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!!

  6. #6
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    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..

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    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òòòò!!

  8. #8
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    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

  9. #9
    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
    codice:
    void test()
    {
        struct
        {
            int a;
            int b;
        } miaVar;
        miaVar.a = 10;
        miaVar.b = 40;
    }
    ma questo no
    codice:
    void test()
    {
        struct Struttura
        {
            int a;
            int b;
        };
        Struttura miaVar;
        miaVar.a = 10;
        miaVar.b = 40;
    }
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Ottima precisazione, questa non la sapevo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.