Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - ereditarietà
Forum - C/C++ - ereditarietà

Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 16:22
Lunedì, 07/12/2009
ciao a tutti ho un problema nella getione dell'ereditarietà delle classi ho creato una classe interfaccia che contiene al suo interno la dichiarazione di 4 funzioni virtuali pure,e una sottoclasse cincout la quale ha al suo interno le stesse funzioni ma con i prototipi. Sotto vi metto la dichiarazione delle classi,il mio problema stà nel fatto che se richiamo le funzioni nel main mi scrive i due errori seguenti:
error C2259: 'interfaccia': impossibile creare un'istanza di classe astratta
vedere la dichiarazione di 'interfaccia::vis'
vedere la dichiarazione di 'interfaccia::azione'
ecc = per tt le funzioni della classe essa deve gestire mediante classe astratta la stmpa a video e gli inserimenti mi sapete indicare come eliminare tali errori?
Credo dipenda dal fatto che nelle varie funzioni al momento della dichiarazione de
vo aver sbagliato qualcosa grazie a chiunque mi aiuterà preannuncio che sn alle prime armi in questo campo.:heehee::rofl:

Codice sorgente - presumibilmente C++

  1. class interfaccia
  2. {
  3. public:
  4.         //vi metto le funzioni delle pedine del giocatore 1
  5.         virtual void azione()=0;
  6.     //vi metto le funzioni del giocatore 2
  7.     virtual void azione2()=0;
  8.         virtual void vis()=0;
  9.         virtual void win()=0;
  10. }l;
  11. class cincout:public interfaccia
  12. {
  13. public:
  14.         void azione();
  15.     void azione2();
  16.         void vis();
  17.         void win(bool, bool);
  18. };



Codice sorgente - presumibilmente C++

  1. int main()
  2. {
  3.        
  4.         int o=0,v=0,s=0,i=0,da=0,ga=0,ka=0,sg=0,fg=0,h=0,mm=0,man=0,cas=0;
  5.         //richiamo le varie funzioni delle classi eseguendo il gioco.
  6.         bool vit2;
  7.         bool vit1;
  8.         dan.ins1();
  9.         dan.ins2();
  10.         //fine inserimento pedine
  11.         l.vis();
  12.         m=0;
  13.         vit1=false;
  14.         vit2=false;
  15.         do
  16.         {  
  17.                 l.azione();
  18.                 int man=0;
  19.                 l.vis();
  20.             //SECONDA PARTE DEL GIOCO FUNZIONI PER GIOCATORE 2
  21.             x=0,y=0,n=0,sas=0;
  22.             m=0;
  23.             l.azione2();
  24.                 l.vis();
  25.         sas=0,cas=0,mat=0,man=0;
  26.         for(o=0;o<8;o++)
  27.         {
  28.                 for(i=0;i<8;i++)
  29.                 {
  30.                         if(dan.campo[o][i][1]==2)
  31.                         {
  32.                                 sas++;
  33.                         }
  34.                         else if(dan.campo[o][i][1]==15)
  35.                         {
  36.                                 cas++;
  37.                         }
  38.                 }
  39.         }
  40.         for(o=0;o<8;o++)
  41.         {
  42.                 for(i=0;i<8;i++)
  43.                 {
  44.                         if(dan.campo[o][i][1]==1)
  45.                         {
  46.                                 mat++;
  47.                         }
  48.                         else if(dan.campo[o][i][1]==3)
  49.                         {
  50.                                 man++;
  51.                         }
  52.                 }
  53.         }
  54.         if(sas==0)
  55.         {
  56.                 if (cas==0)
  57.                 {
  58.                         vit1=true;
  59.                 }
  60.         }
  61.         if(mat==0)
  62.         {
  63.                 if(man==0)
  64.                 {
  65.                         vit2=true;
  66.                 }
  67.         }
  68.         }
  69.         while((vit2==false)&&(vit1==false));
  70.         l.win(vit2,vit1);
  71.         system("pause");
  72. }
  73.  
  74. void cincout:: vis()
  75. {
  76.         system("cls");//visualizzazione damiera
  77.         cout<<"giocatore 1 hai le pedine "<<(char)vet[0]<<endl;
  78.         cout<<"giocatore 2 hai le pedine "<<(char)vet[1]<<endl;
  79.  
  80.         cout << endl<< "                       ";
  81.         cout << endl<< "   0 1 2 3 4 5 6 7 ";
  82.         for (int v=0;v<8;v++)
  83.         {
  84.                 cout <<endl << "  |-|-|-|-|-|-|-|-|"<<endl;
  85.                 if (v <=7) cout << "0"  ;
  86.                         cout << v       <<"|";
  87.                 for (int o=0 ;o<8; o++)
  88.                 {
  89.                         if(dan.campo[o][v][1]!=1&&dan.campo[o][v][1]!=2)
  90.                         {
  91.                                 cout << char(dan.campo[o][v][1]) <<"|";
  92.                         }
  93.                         else
  94.                         {
  95.              
  96.                                 cout << char(dan.campo[o][v][1])  <<"|";
  97.                         }
  98.  
  99.                         }
  100.                
  101.         }
  102.         cout << endl<< "  |-|-|-|-|-|-|-|-|"<<endl;
  103.     //fine visualizzazione damiera
  104.         }
  105. void dama::ins1()
  106.         {
  107.                
  108.        
  109.         //inserimento
  110.         for(int i=0;i<1;i++)
  111.         {
  112.                 for(int s=0;s<8;s=s+2)
  113.                 {
  114.                         dan.campo[i][s][1]=1;
  115.                 }
  116.         }
  117.         for(int i=1;i<2;i++)
  118.         {
  119.                 for(int s=1;s<8;s=s+2)
  120.                 {
  121.                         dan.campo[i][s][1]=1;
  122.                 }
  123.         }
  124.                
  125.         }
  126.         void dama::ins2()
  127.         {
  128.            for(int i=6;i<7;i++)//funzione visualizzA PER GLI 1
  129.            {  
  130.                
  131.                 for(int s=0;s<8;s=s+2)
  132.                 {
  133.                         dan.campo[i][s][1]=2;
  134.                        
  135.                 }
  136.         }
  137.         for(int i=7;i<=8;i++)
  138.         {  
  139.                
  140.                 for(int s=1;s<=8;s=s+2)
  141.                 {
  142.                         dan.campo[i][s][1]=2;
  143.                        
  144.                 }
  145.         }
  146.        
  147.        
  148.         }
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.        
  158.         void cincout::azione()
  159.     {
  160.         int am,as,m,n,fg,sg;
  161.         do//mangia per i 2
  162.         {
  163.                    m=0;n=0;
  164.                    fg=0;sg=0;
  165.            cout<<"inserisci le coordinate della pedina  uno che vuoi muovere!"<<endl;
  166.                cin>>m;
  167.                cin>>n;
  168.                cout<<"inserisci dove vuoi spostare!!"<<endl;
  169.                cin>>fg;
  170.                cin>>sg;
  171.                if(dan.campo[m][n][1]==3)
  172.                    {
  173.                              if(dan.campo[fg][sg][1]==2||dan.campo[fg][sg][1]==15)
  174.                                  {
  175.                                    cout<<"dove vuoi andare dopo aver mangiato  "<<endl;
  176.                                    cin>>am;
  177.                                    cin>>as;
  178.                                    space=true;
  179.                                if(am==fg+1)
  180.                                         {
  181.                                           dan.campo[fg][sg][1]=0;
  182.                           dan.campo[am][as][1]=3;
  183.                                   dan.campo[m][n][1]=0;
  184.                                         }
  185.                                         if(am==fg-1)
  186.                                         {
  187.                                           dan.campo[fg][sg][1]=0;
  188.                           dan.campo[am][as][1]=3;
  189.                                   dan.campo[m][n][1]=0;
  190.                                         }
  191.                                
  192.                                  }
  193.                                  else if(dan.campo[m][n][1]==3)
  194.                                  {
  195.                                          if(dan.campo[fg][sg][1]==0)
  196.                                          {
  197.                                                   dan.campo[fg][sg][1]=3;
  198.                               dan.campo[m][n][1]=0;
  199.                                      }
  200.                                  }
  201.                    }
  202.  
  203.                 if(dan.campo[m][n][1]==1)
  204.                 {
  205.                    if(dan.campo[fg][sg][1]==0)
  206.                     {
  207.                              if(fg==m+1)//leva
  208.                                    {
  209.                                         if(sg==n+1||sg==n-1)
  210.                                         {
  211.                                                 if((dan.campo[m+1][n+1][1]!=1)||(dan.campo[m+1][n-1][1]!=1))
  212.                                                 {
  213.                                                        
  214.                                                       space=true;
  215.                                           dan.campo[fg][sg][1]=1;
  216.                                                   dan.campo[m][n][1]=0;
  217.                                                        
  218.                                                 }
  219.                                         }
  220.                                                                
  221.                                  }
  222.                    }
  223.                    else if(dan.campo[fg][sg][1]==2)
  224.                    {
  225.                               cout<<"dove vuoi mangiare  "<<endl;
  226.                                   cin>>am;
  227.                                   cin>>as;
  228.                                   space=true;
  229.                               if(am==fg+1)
  230.                                         {
  231.                                           dan.campo[fg][sg][1]=0;
  232.                           dan.campo[am][as][1]=1;
  233.                                   dan.campo[m][n][1]=0;
  234.                                         }
  235.                                         else if(am==fg-1)
  236.                                         {
  237.                                           dan.campo[fg][sg][1]=0;
  238.                           dan.campo[am][as][1]=1;
  239.                                   dan.campo[m][n][1]=0;
  240.                                         }
  241.                                
  242.                    }
  243.                                
  244.                        
  245.                 }
  246.        
  247.            //tutto ok fino a qui
  248.                
  249.           cout<<"rinserire le coordinate del luogo in cui è stata spostata la pedina\n per verificare se è dama"<<endl;            
  250.           cin>>fg;
  251.           cin>>sg;
  252.           if(dan.campo[fg][sg][1]!=3)
  253.           {
  254.                  if(fg==7)
  255.                          {
  256.                                                  space=true;
  257.                                      dan.campo[m][n][1]=0;
  258.                                      dan.campo[fg][sg][1]=3;
  259.                      }
  260.                                        
  261.           }
  262.          
  263.         }
  264.         while (space==false);
  265.        
  266. }
  267. void cincout::azione2()
  268. {
  269.         int am,as,m,n,fg,sg;
  270.         do//mangia per i 2
  271.         {
  272.        cout<<"inserisci le coordinate della pedina  due che vuoi muovere!"<<endl;
  273.            cin>>m;
  274.            cin>>n;
  275.            cout<<"inserisci dove vuoi spostare!!"<<endl;
  276.            cin>>fg;
  277.            cin>>sg;
  278.                if(dan.campo[m][n][1]==15)
  279.                    {
  280.                            
  281.                                  
  282.                                  if(dan.campo[fg][sg][1]==1)
  283.                                  {
  284.                                   cout<<"dove vuoi mangiare  "<<endl;
  285.                                   cin>>am;
  286.                                   cin>>as;
  287.                                   space=true;
  288.                               if(am==fg+1)
  289.                                         {
  290.                                           dan.campo[fg][sg][1]=0;
  291.                           dan.campo[am][as][1]=15;
  292.                                   dan.campo[m][n][1]=0;
  293.                                         }
  294.                                         if(am==fg-1)
  295.                                         {
  296.                                           dan.campo[fg][sg][1]=0;
  297.                           dan.campo[am][as][1]=15;
  298.                                   dan.campo[m][n][1]=0;
  299.                                         }
  300.                                
  301.                                  }
  302.                                  if(dan.campo[fg][sg][1]==3)
  303.                                  {
  304.                                   cout<<"dove vuoi mangiare  "<<endl;
  305.                                   cin>>am;
  306.                                   cin>>as;
  307.                                   space=true;
  308.                               if(am==fg+1)
  309.                                         {
  310.                                           dan.campo[fg][sg][1]=0;
  311.                           dan.campo[am][as][1]=15;
  312.                                   dan.campo[m][n][1]=0;
  313.                                         }
  314.                                         else if(am==fg-1)
  315.                                         {
  316.                                          dan.campo[fg][sg][1]=0;
  317.                          dan.campo[am][as][1]=15;
  318.                                  dan.campo[m][n][1]=0;
  319.                                         }
  320.                                
  321.                                  }
  322.                                  else if(dan.campo[m][n][1]==15)
  323.                                  {
  324.                                          if(dan.campo[fg][sg][1]==0)
  325.                                          {
  326.                                                   dan.campo[fg][sg][1]=15;
  327.                               dan.campo[m][n][1]=0;
  328.                                      }
  329.                                  }
  330.                    }
  331.  
  332.                        
  333.        
  334.        
  335.       if(dan.campo[m][n][1]==2)
  336.                 {
  337.                    if(dan.campo[fg][sg][1]==0)
  338.                     {
  339.                              if(fg==m-1)//leva
  340.                                    {
  341.                                         if(sg==n+1||sg==n-1)
  342.                                         {
  343.                                                 if((dan.campo[m-1][n+1][1]!=1)||(dan.campo[m-1][n-1][1]!=1))
  344.                                                 {
  345.                                                        
  346.                                                       space=true;
  347.                                           dan.campo[fg][sg][1]=2;
  348.                                                   dan.campo[m][n][1]=0;
  349.                                                        
  350.                                                 }
  351.                                         }
  352.                                         else
  353.                                         {
  354.                                         cout<<"inserisci le coordinate x e y dove vuoi muovere!"<<endl;
  355.                                 scanf("%d %d",&x,&y);
  356.                                         }
  357.        
  358.                                
  359.                        
  360.                                  }
  361.                    }
  362.                    else if(dan.campo[fg][sg][1]==1)
  363.                    {
  364.                               cout<<"dove vuoi mangiare  "<<endl;
  365.                                   cin>>am;
  366.                                   cin>>as;
  367.                                   space=true;
  368.                               if(am==fg+1)
  369.                                         {
  370.                                           dan.campo[fg][sg][1]=0;
  371.                           dan.campo[am][as][1]=2;
  372.                                   dan.campo[m][n][1]=0;
  373.                                         }
  374.                                         else if(am==fg-1)
  375.                                         {
  376.                                           dan.campo[fg][sg][1]=0;
  377.                           dan.campo[am][as][1]=2;
  378.                                   dan.campo[m][n][1]=0;
  379.                                         }
  380.                                
  381.                    }
  382.                                
  383.                        
  384.           }
  385.        
  386.            //tutto ok fino a qui
  387.                
  388.           cout<<"riinserire le coordinate del luogo in cui è stata spostata la pedina\n per verificare se è dama"<<endl;                   
  389.           cin>>fg;
  390.           cin>>sg;
  391.          
  392.           if(dan.campo[fg][sg][1]!=15)
  393.           {
  394.                         if(fg==0)
  395.                                         {
  396.                                                  space=true;
  397.                                      dan.campo[m][n][1]=0;
  398.                                      dan.campo[fg][sg][1]=15;
  399.                                          
  400.                                                  
  401.                                         }
  402.                                        
  403.           }
  404.        
  405.                 }
  406.      while (space==false);
  407.         }
  408.          
  409.  
  410.         void cincout::win(bool gagio,bool fagio)
  411.     {
  412.         if(gagio==true)
  413.         {
  414.                 cout<<"-------------------------------------------"<<endl;
  415.                 cout<<"|ha vinto il giocatore due complimenti!!!!! |"<<endl;
  416.         cout<<"-------------------------------------------"<<endl;
  417.         }
  418.         else if(fagio==true)
  419.         {
  420.                 cout<<"--------------------------------------------------"<<endl;
  421.             cout<<"| ha vinto il giocatore uno  complimenti!!!!!     |"<<endl;
  422.             cout<<"--------------------------------------------------"<<endl;
  423.         }
  424. }


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:25
Lunedì, 07/12/2009
Se non posti tutto il sorgente come ti possiamo aiutare?


Il mio blog: https://piero.dev
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:24
Lunedì, 07/12/2009
Un utente mi ha fatto notare questa linea:

Codice sorgente - presumibilmente Plain Text

  1. }l;



Subito dopo la dichiarazione di interfaccia.

La l non ci va. Toglila.


Il mio blog: https://piero.dev
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 14:59
Martedì, 08/12/2009
la l lò messa per accedere alla funzioni membro della classe nel main()
comunque ecco il codice completo:
L'errore è sempre il solito mi segnala
vedere la dichiarazione di 'interfaccia::vis'
1>        'void interfaccia::vis(void)': è astratta e la stessa cosa per tt le funzioni della classe cincout
Codice sorgente - presumibilmente C++

  1. #include "stdafx.h"
  2. #include<iostream>
  3. using namespace std;
  4. #include <string>
  5. class gioco
  6. {
  7. public:
  8.         int campo[8][8][1];
  9.         int o,v,i;//definisco nel costruttore che gli indici della matrice campo sono a 0
  10.        
  11.         gioco()
  12.         {
  13.                 o=0;
  14.                 v=0;
  15.                 i=0;
  16.         }
  17.     ~gioco()
  18.         {
  19.                 cout<<"sono il distruttore di gioco"<<endl;
  20.         }
  21.        
  22.  
  23.  
  24.        
  25. };
  26.  
  27. class dama:public gioco
  28. {
  29. public:
  30.        
  31.         void ins1();
  32.         void ins2();
  33.        
  34. }dan;
  35. class interfaccia
  36. {
  37. public:
  38.         //vi metto le funzioni delle pedine del giocatore 1
  39.         virtual void azione()=0;
  40.     //vi metto le funzioni del giocatore 2
  41.     virtual void azione2()=0;
  42.         virtual void vis()=0;
  43.         virtual void win()=0;
  44. }l;
  45. class cincout:public interfaccia
  46. {
  47. public:
  48.         void azione();
  49.         void azione2();
  50.         void vis();
  51.         void win(bool, bool);
  52. };
  53.  
  54. namespace variabili
  55. {  
  56.        
  57.         int vet[3]={1,2};
  58.         bool space=false;
  59.         int k=0,m=1,x=0,y=0,n=0,sas=0,mat=0,am=1,ma,sa,lk=0,as=0,g=0;;
  60.         bool flag=false;
  61.        
  62.        
  63. }
  64. using namespace variabili;
  65.  
  66. int main()
  67. {
  68.        
  69.         int o=0,v=0,s=0,i=0,da=0,ga=0,ka=0,sg=0,fg=0,h=0,mm=0,man=0,cas=0;
  70.         //richiamo le varie funzioni delle classi eseguendo il gioco.
  71.         bool vit2;
  72.         bool vit1;
  73.         dan.ins1();
  74.         dan.ins2();
  75.         //fine inserimento pedine
  76.         l.vis();
  77.         m=0;
  78.         vit1=false;
  79.         vit2=false;
  80.         do
  81.         {  
  82.                 l.azione();
  83.                 int man=0;
  84.                 l.vis();
  85.             //SECONDA PARTE DEL GIOCO FUNZIONI PER GIOCATORE 2
  86.             x=0,y=0,n=0,sas=0;
  87.             m=0;
  88.             l.azione2();
  89.                 l.vis();
  90.         sas=0,cas=0,mat=0,man=0;
  91.         for(o=0;o<8;o++)
  92.         {
  93.                 for(i=0;i<8;i++)
  94.                 {
  95.                         if(dan.campo[o][i][1]==2)
  96.                         {
  97.                                 sas++;
  98.                         }
  99.                         else if(dan.campo[o][i][1]==15)
  100.                         {
  101.                                 cas++;
  102.                         }
  103.                 }
  104.         }
  105.         for(o=0;o<8;o++)
  106.         {
  107.                 for(i=0;i<8;i++)
  108.                 {
  109.                         if(dan.campo[o][i][1]==1)
  110.                         {
  111.                                 mat++;
  112.                         }
  113.                         else if(dan.campo[o][i][1]==3)
  114.                         {
  115.                                 man++;
  116.                         }
  117.                 }
  118.         }
  119.         if(sas==0)
  120.         {
  121.                 if (cas==0)
  122.                 {
  123.                         vit1=true;
  124.                 }
  125.         }
  126.         if(mat==0)
  127.         {
  128.                 if(man==0)
  129.                 {
  130.                         vit2=true;
  131.                 }
  132.         }
  133.         }
  134.         while((vit2==false)&&(vit1==false));
  135.         l.win(vit2,vit1);
  136.         system("pause");
  137. }
  138.  
  139. void cincout:: vis()
  140. {
  141.         system("cls");//visualizzazione damiera
  142.         cout<<"giocatore 1 hai le pedine "<<(char)vet[0]<<endl;
  143.         cout<<"giocatore 2 hai le pedine "<<(char)vet[1]<<endl;
  144.  
  145.         cout << endl<< "                       ";
  146.         cout << endl<< "   0 1 2 3 4 5 6 7 ";
  147.         for (int v=0;v<8;v++)
  148.         {
  149.                 cout <<endl << "  |-|-|-|-|-|-|-|-|"<<endl;
  150.                 if (v <=7) cout << "0"  ;
  151.                         cout << v       <<"|";
  152.                 for (int o=0 ;o<8; o++)
  153.                 {
  154.                         if(dan.campo[o][v][1]!=1&&dan.campo[o][v][1]!=2)
  155.                         {
  156.                                 cout << char(dan.campo[o][v][1]) <<"|";
  157.                         }
  158.                         else
  159.                         {
  160.              
  161.                                 cout << char(dan.campo[o][v][1])  <<"|";
  162.                         }
  163.  
  164.                         }
  165.                
  166.         }
  167.         cout << endl<< "  |-|-|-|-|-|-|-|-|"<<endl;
  168.     //fine visualizzazione damiera
  169.         }
  170. void dama::ins1()
  171.         {
  172.                
  173.        
  174.         //inserimento
  175.         for(int i=0;i<1;i++)
  176.         {
  177.                 for(int s=0;s<8;s=s+2)
  178.                 {
  179.                         dan.campo[i][s][1]=1;
  180.                 }
  181.         }
  182.         for(int i=1;i<2;i++)
  183.         {
  184.                 for(int s=1;s<8;s=s+2)
  185.                 {
  186.                         dan.campo[i][s][1]=1;
  187.                 }
  188.         }
  189.                
  190.         }
  191.         void dama::ins2()
  192.         {
  193.            for(int i=6;i<7;i++)//funzione visualizzA PER GLI 1
  194.            {  
  195.                
  196.                 for(int s=0;s<8;s=s+2)
  197.                 {
  198.                         dan.campo[i][s][1]=2;
  199.                        
  200.                 }
  201.         }
  202.         for(int i=7;i<=8;i++)
  203.         {  
  204.                
  205.                 for(int s=1;s<=8;s=s+2)
  206.                 {
  207.                         dan.campo[i][s][1]=2;
  208.                        
  209.                 }
  210.         }
  211.        
  212.        
  213.         }
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.        
  223.         void cincout::azione()
  224.     {
  225.         int am,as,m,n,fg,sg;
  226.         do//mangia per i 2
  227.         {
  228.                    m=0;n=0;
  229.                    fg=0;sg=0;
  230.            cout<<"inserisci le coordinate della pedina  uno che vuoi muovere!"<<endl;
  231.                cin>>m;
  232.                cin>>n;
  233.                cout<<"inserisci dove vuoi spostare!!"<<endl;
  234.                cin>>fg;
  235.                cin>>sg;
  236.                if(dan.campo[m][n][1]==3)
  237.                    {
  238.                              if(dan.campo[fg][sg][1]==2||dan.campo[fg][sg][1]==15)
  239.                                  {
  240.                                    cout<<"dove vuoi andare dopo aver mangiato  "<<endl;
  241.                                    cin>>am;
  242.                                    cin>>as;
  243.                                    space=true;
  244.                                if(am==fg+1)
  245.                                         {
  246.                                           dan.campo[fg][sg][1]=0;
  247.                           dan.campo[am][as][1]=3;
  248.                                   dan.campo[m][n][1]=0;
  249.                                         }
  250.                                         if(am==fg-1)
  251.                                         {
  252.                                           dan.campo[fg][sg][1]=0;
  253.                           dan.campo[am][as][1]=3;
  254.                                   dan.campo[m][n][1]=0;
  255.                                         }
  256.                                
  257.                                  }
  258.                                  else if(dan.campo[m][n][1]==3)
  259.                                  {
  260.                                          if(dan.campo[fg][sg][1]==0)
  261.                                          {
  262.                                                   dan.campo[fg][sg][1]=3;
  263.                               dan.campo[m][n][1]=0;
  264.                                      }
  265.                                  }
  266.                    }
  267.  
  268.                 if(dan.campo[m][n][1]==1)
  269.                 {
  270.                    if(dan.campo[fg][sg][1]==0)
  271.                     {
  272.                              if(fg==m+1)//leva
  273.                                    {
  274.                                         if(sg==n+1||sg==n-1)
  275.                                         {
  276.                                                 if((dan.campo[m+1][n+1][1]!=1)||(dan.campo[m+1][n-1][1]!=1))
  277.                                                 {
  278.                                                        
  279.                                                       space=true;
  280.                                           dan.campo[fg][sg][1]=1;
  281.                                                   dan.campo[m][n][1]=0;
  282.                                                        
  283.                                                 }
  284.                                         }
  285.                                                                
  286.                                  }
  287.                    }
  288.                    else if(dan.campo[fg][sg][1]==2)
  289.                    {
  290.                               cout<<"dove vuoi mangiare  "<<endl;
  291.                                   cin>>am;
  292.                                   cin>>as;
  293.                                   space=true;
  294.                               if(am==fg+1)
  295.                                         {
  296.                                           dan.campo[fg][sg][1]=0;
  297.                           dan.campo[am][as][1]=1;
  298.                                   dan.campo[m][n][1]=0;
  299.                                         }
  300.                                         else if(am==fg-1)
  301.                                         {
  302.                                           dan.campo[fg][sg][1]=0;
  303.                           dan.campo[am][as][1]=1;
  304.                                   dan.campo[m][n][1]=0;
  305.                                         }
  306.                                
  307.                    }
  308.                                
  309.                        
  310.                 }
  311.        
  312.            //tutto ok fino a qui
  313.                
  314.           cout<<"rinserire le coordinate del luogo in cui è stata spostata la pedina\n per verificare se è dama"<<endl;            
  315.           cin>>fg;
  316.           cin>>sg;
  317.           if(dan.campo[fg][sg][1]!=3)
  318.           {
  319.                  if(fg==7)
  320.                          {
  321.                                                  space=true;
  322.                                      dan.campo[m][n][1]=0;
  323.                                      dan.campo[fg][sg][1]=3;
  324.                      }
  325.                                        
  326.           }
  327.          
  328.         }
  329.         while (space==false);
  330.        
  331. }
  332. void cincout::azione2()
  333. {
  334.         int am,as,m,n,fg,sg;
  335.         do//mangia per i 2
  336.         {
  337.        cout<<"inserisci le coordinate della pedina  due che vuoi muovere!"<<endl;
  338.            cin>>m;
  339.            cin>>n;
  340.            cout<<"inserisci dove vuoi spostare!!"<<endl;
  341.            cin>>fg;
  342.            cin>>sg;
  343.                if(dan.campo[m][n][1]==15)
  344.                    {
  345.                            
  346.                                  
  347.                                  if(dan.campo[fg][sg][1]==1)
  348.                                  {
  349.                                   cout<<"dove vuoi mangiare  "<<endl;
  350.                                   cin>>am;
  351.                                   cin>>as;
  352.                                   space=true;
  353.                               if(am==fg+1)
  354.                                         {
  355.                                           dan.campo[fg][sg][1]=0;
  356.                           dan.campo[am][as][1]=15;
  357.                                   dan.campo[m][n][1]=0;
  358.                                         }
  359.                                         if(am==fg-1)
  360.                                         {
  361.                                           dan.campo[fg][sg][1]=0;
  362.                           dan.campo[am][as][1]=15;
  363.                                   dan.campo[m][n][1]=0;
  364.                                         }
  365.                                
  366.                                  }
  367.                                  if(dan.campo[fg][sg][1]==3)
  368.                                  {
  369.                                   cout<<"dove vuoi mangiare  "<<endl;
  370.                                   cin>>am;
  371.                                   cin>>as;
  372.                                   space=true;
  373.                               if(am==fg+1)
  374.                                         {
  375.                                           dan.campo[fg][sg][1]=0;
  376.                           dan.campo[am][as][1]=15;
  377.                                   dan.campo[m][n][1]=0;
  378.                                         }
  379.                                         else if(am==fg-1)
  380.                                         {
  381.                                          dan.campo[fg][sg][1]=0;
  382.                          dan.campo[am][as][1]=15;
  383.                                  dan.campo[m][n][1]=0;
  384.                                         }
  385.                                
  386.                                  }
  387.                                  else if(dan.campo[m][n][1]==15)
  388.                                  {
  389.                                          if(dan.campo[fg][sg][1]==0)
  390.                                          {
  391.                                                   dan.campo[fg][sg][1]=15;
  392.                               dan.campo[m][n][1]=0;
  393.                                      }
  394.                                  }
  395.                    }
  396.  
  397.                        
  398.        
  399.        
  400.       if(dan.campo[m][n][1]==2)
  401.                 {
  402.                    if(dan.campo[fg][sg][1]==0)
  403.                     {
  404.                              if(fg==m-1)//leva
  405.                                    {
  406.                                         if(sg==n+1||sg==n-1)
  407.                                         {
  408.                                                 if((dan.campo[m-1][n+1][1]!=1)||(dan.campo[m-1][n-1][1]!=1))
  409.                                                 {
  410.                                                        
  411.                                                       space=true;
  412.                                           dan.campo[fg][sg][1]=2;
  413.                                                   dan.campo[m][n][1]=0;
  414.                                                        
  415.                                                 }
  416.                                         }
  417.                                         else
  418.                                         {
  419.                                         cout<<"inserisci le coordinate x e y dove vuoi muovere!"<<endl;
  420.                                 scanf("%d %d",&x,&y);
  421.                                         }
  422.        
  423.                                
  424.                        
  425.                                  }
  426.                    }
  427.                    else if(dan.campo[fg][sg][1]==1)
  428.                    {
  429.                               cout<<"dove vuoi mangiare  "<<endl;
  430.                                   cin>>am;
  431.                                   cin>>as;
  432.                                   space=true;
  433.                               if(am==fg+1)
  434.                                         {
  435.                                           dan.campo[fg][sg][1]=0;
  436.                           dan.campo[am][as][1]=2;
  437.                                   dan.campo[m][n][1]=0;
  438.                                         }
  439.                                         else if(am==fg-1)
  440.                                         {
  441.                                           dan.campo[fg][sg][1]=0;
  442.                           dan.campo[am][as][1]=2;
  443.                                   dan.campo[m][n][1]=0;
  444.                                         }
  445.                                
  446.                    }
  447.                                
  448.                        
  449.           }
  450.        
  451.            //tutto ok fino a qui
  452.                
  453.           cout<<"riinserire le coordinate del luogo in cui è stata spostata la pedina\n per verificare se è dama"<<endl;                   
  454.           cin>>fg;
  455.           cin>>sg;
  456.          
  457.           if(dan.campo[fg][sg][1]!=15)
  458.           {
  459.                         if(fg==0)
  460.                                         {
  461.                                                  space=true;
  462.                                      dan.campo[m][n][1]=0;
  463.                                      dan.campo[fg][sg][1]=15;
  464.                                          
  465.                                                  
  466.                                         }
  467.                                        
  468.           }
  469.        
  470.                 }
  471.      while (space==false);
  472.         }
  473.          
  474.  
  475.         void cincout::win(bool gagio,bool fagio)
  476.     {
  477.         if(gagio==true)
  478.         {
  479.                 cout<<"-------------------------------------------"<<endl;
  480.                 cout<<"|ha vinto il giocatore due complimenti!!!!! |"<<endl;
  481.         cout<<"-------------------------------------------"<<endl;
  482.         }
  483.         else if(fagio==true)
  484.         {
  485.                 cout<<"--------------------------------------------------"<<endl;
  486.             cout<<"| ha vinto il giocatore uno  complimenti!!!!!     |"<<endl;
  487.             cout<<"--------------------------------------------------"<<endl;
  488.         }
  489. }


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:10
Martedì, 08/12/2009
Testo quotato

Postato originariamente da matteog:

la l lò messa per accedere alla funzioni membro della classe nel main()
comunque ecco il codice completo:
L'errore è sempre il solito mi segnala
vedere la dichiarazione di 'interfaccia::vis'
1>        'void interfaccia::vis(void)': è astratta e la stessa cosa per tt le funzioni della classe cincout




Interfaccia e' una classe astratta, quindi vuol dire che non la puoi istanziare (e di conseguenza non puoi accedere alle sue funzioni membro direttamente, devi prima derivarla).

Togli la l da interfaccia e mettila in cincout.
Codice sorgente - presumibilmente C++

  1. class cincout:public interfaccia
  2. {
  3. public:
  4.     void azione();
  5.     void azione2();
  6.     void vis();
  7.     void win(bool, bool);
  8. }l;



Il mio blog: https://piero.dev
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 16:15
Martedì, 08/12/2009
perfect era proprio quello adesso funziona perfettamente però ho dovuto trasformare la win in una funzione normale della cincout perchè mi dava errore in fase di compilazione.Grazie mille!!hai qualche consiglio per ottimizzare il programma e per rimuovere quel namespace all'inizio?oppure è abbastanza decente?faccio questa domanda soltanto perchè di sicuro hai più occhio di me nel valutare un lavoro ti ringrazio ancora!:k:

PM Quote