Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++]Problema con inizializzazione di un oggetto dentro una struct

    Salve a tutti, vi presento il mio problema, che sicuramente sarà una cavolata, ma non riesco a risolverlo :/

    Ho una classe Myclass cosi formata:
    codice:
    class Myclass {
    codice:
            public:
            Myclass(int x, inty);
           ~Myclass();
            int x;
            int y;
    };


    codice:
    typedef struct nodo{
    Myclass c1;
    struct nodo* next;
    }nodo;
    
    int main(){
    int x=5;
    int y=6;
    Myclass c2(x,y);
    nodo n*=(nodo*)malloc(sizeof(nodo));
    n->next=NULL;
    n->c1=c2;     //il problema è qui!!!!
    return 0;
    }

    in compilazione non mi da alcun errore, quando però eseguo, il programma smette di funzionare, e ho visto che il problema è in n->c1=c2.
    Perchè questa istruzione non dovrebbe funzionare?
    Il costruttore di Myclass è corretto, ho fatto delle prove e tutto funziona.
    Grazie mille in anticipo per l'aiuto!

  2. #2
    Questo :
    codice:
    nodo n*=(nodo*)malloc(sizeof(nodo));
    dovrebbe essere

    codice:
    nodo *n=(nodo*)malloc(sizeof(nodo));
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    si si giusto è come hai detto tu, nel scriverlo qui sul forum ho sbagliato, ma comunque il problema rimane :/

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Non ho errori ... ma non hai mostrato né il costruttore né il distruttore

    A parte tutto, è meglio che x e y siano private

    private:
    int
    x;
    int y;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    ok, riprovando, non da più problemi...fin quando lavoro con gli int...se però provo ad utilizzare string al posto di int, il problema persiste..
    codice:
    #pragma once#include<string>
    using namespace std;
    class Myclass
    {
    public:
        Myclass(string x, string y){
        name=x;
    surname=y;
    };
        ~Myclass();
        string name;
        string surname;
    };

    codice:
    #include "Myclass.h"
    #include<iostream>
    #include<malloc.h>
    
    
    typedef struct nodo{
    	Myclass c1;
    	struct nodo* next;
    }nodo;
    
    
    
    
    int main(){
    
    
    	
    	Myclass c2("TIZIO", "CAIO");
    	nodo* n = (nodo*)malloc(sizeof(nodo));
    	n->c1 = c2;
    	printf("%d", n->c1.x);
    
    
    
    
    }
    Ultima modifica di LuigiC2590; 25-03-2014 a 17:31

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    [Nota a margine: struct e class sono uguali per C++, cambia che la prima ha di default public, la seconda private, motivo per cui non mi par uopo usare malloc]
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.