Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563

    C++ Dichiarazione non consentita

    Ho questa dichiarazione un pò spartana

    codice:
    	union 
    	{
    		struct 	{
    					ID3D10Buffer *VertexBuffer;
    					ID3D10Buffer *IndexBuffer;
    					UINT Indici;
    					D3DXMATRIX Objmatr;
    					GeneralMaterial Mats;
    					unsigned int TextCount; 
    				} ColladaBuffer; 
    
    		struct {
    					ID3DX10Mesh	*pMesh;
    					Material *Materials;
    					DWORD Mat;		
    				} XBuffer;
    	} MeshData;
    Ma quando compilo, ottengo il seguente errore

    Error 1 error C2620: member 'CMesh::ColladaBuffer' of union 'CMesh::<unnamed-tag>' has user-defined constructor or non-trivial default constructor c:\users\vincenzo\documents\visual studio 2008\projects\colladadom\include\loadmesh.h 73
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  2. #2
    Prova così:
    Codice PHP:
    union UMeshData
        
    {
            
    struct     {
                        
    ID3D10Buffer *VertexBuffer;
                        
    ID3D10Buffer *IndexBuffer;
                        
    UINT Indici;
                        
    D3DXMATRIX Objmatr;
                        
    GeneralMaterial Mats;
                        
    unsigned int TextCount
                    } 
    ColladaBuffer

            
    struct {
                        
    ID3DX10Mesh    *pMesh;
                        
    Material *Materials;
                        
    DWORD Mat;        
                    } 
    XBuffer;
        } 
    MeshData
    EDIT: ipotizzando che tu stia definendo la variabile MeshData di tipo "union UMeshData".

  3. #3
    Oppure, verifica che i membri delle strutture anonime ColladaBuffer e XBuffer abbiano il costruttore di default (quello senza argomenti)

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Non va lo stesso, e in effetti non c'è il costruttore di default.
    Non funziona nemmeno se non rendo anonime le 2 strutture.
    Ma perchè è necessario?
    Perchè deve esserci in un'unione?
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #5
    Per dare una risposta precisa bisognerebbe vedere il resto del codice.
    Ma potrebbe essere che, alcuni membri delle strutture anonime della union, abbiano dei costruttori non di default; ma nella definizione della variabile MeshData viene usato il costruttore di default della sua union anonima, ergo il copilatore richiede il costruttore di default anche per quei membri in cui essendo definito un construttore non di default DEVE essere definito anche il costruttore di default.
    Chiarissimo no?
    ;-)

  6. #6
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Chiarissimo ma...perchè l'union vuole il costrutture di default, e la struct invece no?
    Se metto la struct anonima soltanto, compila e funziona
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  7. #7
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Controlla che i membri di ColladaBuffer abbiano tutti un costruttore di default.
    L'errore è li.

  8. #8
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Il problema è che i 4 oggetti che necessitano di un costruttore di default non sono mie classi e sono implementate (come si legge) da DirectX.
    Non posso andare e modificare le definizioni!!
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  9. #9
    Originariamente inviato da XWolverineX
    Il problema è che i 4 oggetti che necessitano di un costruttore di default non sono mie classi e sono implementate (come si legge) da DirectX.
    Non posso andare e modificare le definizioni!!
    Quindi dota di ColladaBuffer di un costruttore di default che chiami i costruttori non di default dei sui membri che non lo hanno.

  10. #10
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    A dire il vero il costruttore non cel'hanno proprio.
    Sono interfacce un pò particolari:

    codice:
        MIDL_INTERFACE("9B7E4C02-342C-4106-A19F-4F2704F689F0")
        ID3D10Buffer : public ID3D10Resource
        {
        public:
            virtual HRESULT STDMETHODCALLTYPE Map( 
                /*  */ 
                __in  D3D10_MAP MapType,
                /*  */ 
                __in  UINT MapFlags,
                /*  */ 
                __out  void **ppData) = 0;
            
            virtual void STDMETHODCALLTYPE Unmap( void) = 0;
            
            virtual void STDMETHODCALLTYPE GetDesc( 
                /*  */ 
                __out  D3D10_BUFFER_DESC *pDesc) = 0;
            
        };
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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 © 2025 vBulletin Solutions, Inc. All rights reserved.