Abdujaparov
21-09-2006, 22:18
Salve a tutti sto cercando di fare qualcosina in C++ per prendere la mano. Ho creato un progetto con Visual Studio 2005, in pratica devo implementare i metodi di una classe astratta di cui ho questo .h:
//CRubrica.h
class CRubrica{
public:
virtual void AggiungiContatto(char* nome,char* numero) = 0;
virtual void CancellaContatto(char* nome) = 0;
virtual void CancellaRubrica(void) = 0;
virtual void CaricaRubrica(char* nomefile) = 0;
/* Ritorna TRUE se viene trovato un contatto che soddisfa la ricerca,
* FALSE altrimenti.
* Uno dei due parametri puo' essere NULL a seconda del tipo di ricerca effettuata
* La funzione deve stampare a video i dettagli del contatto trovato o un messaggio
* di errore.
* */
virtual bool CercaContatto(char* nome,char* numero) = 0;
/* Questa funzione deve stampare a video i dettagli di tutti i contatti presenti
* nella rubrica */
virtual void StampaRubrica(void) = 0;
virtual void SalvaRubrica(char* nomeFile) = 0;
};
Ora la mia classe deve ereditare questa ed il file .h è combinato in questa maniera:
//RubricaImpl.h
#pragma once
#include "c:\documents and settings\angelo\documenti\visual studio 2005\projects\crubricaimpl\crubricaimpl\crubrica.h"
class CRubricaImpl :
public CRubrica
{
public:
CRubricaImpl(void);
void AggiungiContatto(char* nome,char* numero);
void CancellaContatto(char* nome);
void CancellaRubrica(void);
void CaricaRubrica(char* nomefile);
bool CercaContatto(char* nome,char* numero);
void StampaRubrica(void);
void SalvaRubrica(char* nomeFile);
public:
~CRubricaImpl(void);
};
Ora i miei dubbi sorgono adesso: Ho fatto bene a ridichiarare tutti i prototipi della superclasse nella sottoclasse evitando, ovviamente dal mio punto di vista, di definirli virtual?
Il file RubricaImpl.cpp definisce quei metodi (ancora sono vuoti però questo sarà lo scopo) in questo modo:
es:
void CRubricaImpl::AggiungiContatto(char* nome,char* numero){
;
}
Ora se provo a compilare il progetto, dove ancora non ho inserito nessuna linea di codice ma solo le strutture, diciamo così, mi viene dato questo errore che non comprendo:
------ Build started: Project: Primo, Configuration: Debug Win32 ------
Linking...
MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
C:\Documents and Settings\angelo\Documenti\Visual Studio 2005\Projects\Primo\Debug\Primo.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://c:\Documents and Settings\angelo\Documenti\Visual Studio 2005\Projects\Primo\Primo\Debug\BuildLog.htm"
Primo - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Che vuole dire? Io non ho scritto nulla di particolare, ho solo definito i prototipi e nella classe cpp ho scritto le funzioni (ancora vuote al loro interno, non vado avanti fino a quando non risolvo questo problema).
Cosa mi indica l'errore=
Cosa devo fare?
Grazie, ciao ciao.
//CRubrica.h
class CRubrica{
public:
virtual void AggiungiContatto(char* nome,char* numero) = 0;
virtual void CancellaContatto(char* nome) = 0;
virtual void CancellaRubrica(void) = 0;
virtual void CaricaRubrica(char* nomefile) = 0;
/* Ritorna TRUE se viene trovato un contatto che soddisfa la ricerca,
* FALSE altrimenti.
* Uno dei due parametri puo' essere NULL a seconda del tipo di ricerca effettuata
* La funzione deve stampare a video i dettagli del contatto trovato o un messaggio
* di errore.
* */
virtual bool CercaContatto(char* nome,char* numero) = 0;
/* Questa funzione deve stampare a video i dettagli di tutti i contatti presenti
* nella rubrica */
virtual void StampaRubrica(void) = 0;
virtual void SalvaRubrica(char* nomeFile) = 0;
};
Ora la mia classe deve ereditare questa ed il file .h è combinato in questa maniera:
//RubricaImpl.h
#pragma once
#include "c:\documents and settings\angelo\documenti\visual studio 2005\projects\crubricaimpl\crubricaimpl\crubrica.h"
class CRubricaImpl :
public CRubrica
{
public:
CRubricaImpl(void);
void AggiungiContatto(char* nome,char* numero);
void CancellaContatto(char* nome);
void CancellaRubrica(void);
void CaricaRubrica(char* nomefile);
bool CercaContatto(char* nome,char* numero);
void StampaRubrica(void);
void SalvaRubrica(char* nomeFile);
public:
~CRubricaImpl(void);
};
Ora i miei dubbi sorgono adesso: Ho fatto bene a ridichiarare tutti i prototipi della superclasse nella sottoclasse evitando, ovviamente dal mio punto di vista, di definirli virtual?
Il file RubricaImpl.cpp definisce quei metodi (ancora sono vuoti però questo sarà lo scopo) in questo modo:
es:
void CRubricaImpl::AggiungiContatto(char* nome,char* numero){
;
}
Ora se provo a compilare il progetto, dove ancora non ho inserito nessuna linea di codice ma solo le strutture, diciamo così, mi viene dato questo errore che non comprendo:
------ Build started: Project: Primo, Configuration: Debug Win32 ------
Linking...
MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
C:\Documents and Settings\angelo\Documenti\Visual Studio 2005\Projects\Primo\Debug\Primo.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://c:\Documents and Settings\angelo\Documenti\Visual Studio 2005\Projects\Primo\Primo\Debug\BuildLog.htm"
Primo - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Che vuole dire? Io non ho scritto nulla di particolare, ho solo definito i prototipi e nella classe cpp ho scritto le funzioni (ancora vuote al loro interno, non vado avanti fino a quando non risolvo questo problema).
Cosa mi indica l'errore=
Cosa devo fare?
Grazie, ciao ciao.