Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]Errore metodo virtual

    Ciao.
    Ho il seguente codice in una classe base da cui derivano due classi secondarie :
    codice:
    virtual tagLoadDataTempLogic LoadTagLoadsTemp();
    dove tagLoadDataTempLogic è una struct dichiarata nel mio progetto e il cui file è stato incluso con un #include xxxx.h
    codice:
    typedef struct LoadDataTempLogic
    { 
    	CString strFrameObj,strFrameEl, strLoadCase, strCoordSys, strType, strDir, strJointI;
    	double dDistA, dDistB, dValOverLB, dValOverLA;
    }tagLoadDataTempLogic;
    mi da questo errore :
    c:\CMPFRG\CMPIMPORTAPI\BaseSapData.h(44) : error C2433: 'CBaseSapData::tagLoadDataTempLogic' : 'virtual' not permitted on data declarations

    è possibile utilizzare come tipo di ritorno in un metodo virtuale una struct definita nel progetto?
    se si in che modo?
    grazie.

  2. #2

    Re: [c++]Errore metodo virtual

    Originariamente inviato da giuseppe500
    è possibile utilizzare come tipo di ritorno in un metodo virtuale una struct definita nel progetto?
    se si in che modo?
    grazie.
    Sì che si può:
    Codice PHP:
    #include <string>
    #include <iostream>

    typedef struct LoadDataTempLogic

        
    std::string strFrameObj,strFrameElstrLoadCasestrCoordSysstrTypestrDirstrJointI;
        
    double dDistAdDistBdValOverLBdValOverLA;
    }
    tagLoadDataTempLogic;

    class 
    Base{
        public:
        
    virtual tagLoadDataTempLogic LoadTagLoadsTemp(){
            
    tagLoadDataTempLogic ret;
            return 
    ret;
        }
        
        
    virtual ~Base(){
        }
    };

    class 
    Derivata1: public Base{
        public:
        
    virtual tagLoadDataTempLogic LoadTagLoadsTemp(){
            return 
    Base::LoadTagLoadsTemp ();
        }
        
    virtual ~Derivata1(){
        }
    };

    class 
    Derivata2: public Base{
        public:
        
    virtual tagLoadDataTempLogic LoadTagLoadsTemp(){
            return 
    Base::LoadTagLoadsTemp ();
        }
        
    virtual ~Derivata2(){
        }
    };

    int main (void){
        
    Base aBase = new Derivata1;
        
    aBase->LoadTagLoadsTemp ();
        
    delete aBase;
        return 
    0;


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.